首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python_子类调用父方法

1.方式一 子类调用父方法,包含2中形式调用。一种形式是在内部通过继承方式调用父方法,另外一种形式是子类实例化后之后通过继承方式来调用父方法。如下图所示: ?...3班") #调用子类本身方法 student.course() #通过子类调用父方法--->实例化之后来调用父方法 student.eat() #调用子类方法,在子类方法中调用了子类方法,...与student.eat有区别 student.done() 此时如果父名称更改了,那么在子类中所有用到父地方均要进行修改了。...使用super好处,一是可以代替父名,这样后期父名更改了,我们只需要更改子类名称后面的父名即可,子类中其他名可以不用更改;二是使用了super后,调用父方法时可以不传参数self。..."11届土木3班") #调用子类本身方法 student.course() #通过子类调用父方法--->实例化之后来调用父方法 student.eat() #调用子类方法,在子类方法中调用了子类方法

4.8K20
您找到你想要的搜索结果了吗?
是的
没有找到

Python】面向对象 - 继承 ② ( 子类重写父成员 | 子类调用父重名成员 | 子类中使用 父名 调用父成员 | 子类中使用 super 调用父成员 )

一、子类重写父成员 1、子类重写父成员语法 子类 继承 父 成员属性 与 成员方法 后 , 如果对 继承成员 不满意 , 可以 重写 父成员 ; 成员 属性 和 成员 方法 , 都可以进行重写...; 成员属性 重写 , 就是在 子类中 , 修改 成员属性值 ; 成员方法 重写 , 就是在 子类中 , 修改 成员方法方法体内容 ; 在子类中 , 如果需要重写父成员 , 直接在子类中 ,...重新定义父成员即可 ; 在 Python 中 , 不像 Java / Kotlin / Groovy 一样 , 如果子类重写父成员 , 需要使用 @Override 注解 修饰 ; 2、代码示例...1、子类调用父重名成员语法 在 外部 是无法访问 父成员 : 子类 重写 父 成员后 , 通过 子类 实例对象 调用 该 重写后 成员时 , 默认调用就是 重写后成员 ; 在 子类内部 可以...) 2、代码示例 - 子类中使用 父名 调用父成员 在 Dog 子类 make_sound 函数中 , 通过 Animal.name 和 Animal.age 可以调用父成员变量 , 打印出来值为父成员变量值

30930

Python实现子类调用父方法

Person,但是并没有调用父__init__()方法,那么怎样调用父方法呢?...在调用一个实例方法时,该方法self参数会被自动绑定到实例上(称为绑定方法)。但如果直接调用方法(比如Person.__init__()),那么就没有实例会被绑定。...通过将当前实例作为self参数提供给未绑定方法,Student就能使用其父构造方法所有实现,从而name变量被设置。...main__": stu = Student() print stu.getName() super函数会返回一个super对象,这个对象负责进行方法解析,解析过程其会自动查找所有的父以及父...方法一更直观,方法二可以一次初始化所有超. super函数比在超累中直接调用未绑定方法更直观,但是其最大有点是如果子类继承了多个父,它只需要使用一次super函数就可以。

3.1K10

禁止 Python 子类覆盖父方法

子类试图覆盖父时候,可以通过类型标注来发出警告。今天,我们来讲讲如何直接禁止覆盖。 Python 原生是没有提供禁止子类覆盖父方法功能,因此我们需要自己来实现。...先来看一下实现效果: 在这段代码里面,我们禁止子类覆盖父dead()和eat()方法,但不禁止move方法。所以,当我们在子类Dog里面尝试覆盖父dead()时,程序就报错了。...__new__(meta, name, bases, attrs) return klass return Protect 这里,用到了 Python 。...如果大家对元有兴趣,可以看9.13 使用元控制实例创建 — python3-cookbook 3.0.0 文档[1]。简单来说,元用来定义创建行为。...Protect有一个__new__方法,这个方法会在使用了元所有子类__init__之前被调用。

1.7K20

Python协议 、鸭子类型 、 抽象基 、混入

本篇文章探讨一下python几个概念:协议 、鸭子类型 、 抽象基 、混入。 一、协议 在python中,协议是一个或一组方法。...注意,自己定义抽象基要继承 abc.ABC(abc.ABC 是 Python 3.4 新增python2语法不是这样)。...print(issubclass(Cat, Animal)) 输出: True 这种通过注册和抽象基关联起来叫做虚拟子类,虚拟子类不会继承注册抽象基,而且任何时候都不会检查它是否符合抽象基接口...为了避免运行时错误,虚拟子类要实现所需全部方法。 抽象基并不常用,但是在阅读源码时候可能会遇到,因此还是要了解一下。 四、混入(mixin class) 混入是为代码重用而生。...混入应该提供某方面的特定行为,只实现少量关系非常紧密方法并且混入绝对不能实例化。 在 Python 中没有把声明为混入正规方式,所以强烈推荐在名称中加入 ...Mixin 后缀。

1.8K20

5.1 、超子类

5.1 、超子类   子类比超拥有的功能更加丰富。   在本例中,Manager类比超Employee封装了更多数据,拥有更多功能。   ...在通过扩展超定义子类时候,仅需要指出子类和超不同之处,因此,会将通用方法放在超中,而将具有特殊用途方法放在子类中,这种将通用功能放在超方法,在面向对象程序设计中十分普遍。   ...一个子类引用赋给一个超变量,编译器是允许,但是将一个超变量引用赋给一个子类变量,必须进行类型转换,这样才能够通过运行时检查。   ...,它们具体实现是在子类中,抽象扩展可以有两种选择。...一种是在子类中定义部分抽象方法或抽象方法也不定义,这样就必须将子类也标记为抽象;另一种是定义全部抽象方法,这样子类就不是抽象了。   即使不包含抽象方法,也可以将声明为抽象

1K90

outputstream或writer子类_java private

大家好,又见面了,我是你们朋友全栈君。 Java OutputStreamWriter 在本教程中,我们将借助示例学习Java OutputStreamWriter及其方法。...java.io包OutputStreamWriter可用于将字符形式数据转换为字节形式数据。 它继承了抽象Writer。 OutputStreamWriter可与其他输出流一起使用。...在这里,我们使用默认字符编码将字符写入输出流。 但是,我们可以指定用于写入数据字符编码类型(UTF8或UTF16)。...OutputStreamWriter方法 OutputStreamWriter为Writer中出现不同方法提供了实现。...因此,getEncoding()方法返回指定字符编码。 注意:我们已经使用Charset.forName()方法指定字符编码类型。

46220

Python实现子类调用父初始化实例

前言 python中进行面向对象编程,当在子类实例中调用父属性时,由于子类__init__方法重写了父__init__方法,如果在子类中这些属性未经过初始化,使用时就会出错。...这时候就需要在B__init__方法中先执行A__init__方法,脚本才可以正确执行。Python提供了两种方法来完成这个任务。...***方式进行调用。但是如果通过名直接调用方法,self参数就不会被自动绑定到实例上,可以绑定到我们指定实例上。也就是子类实例上,在这里就是B了。...所以这里所说未绑定__init__方法 就是指未绑定父实例__init__方法。...以上这篇Python实现子类调用父初始化实例就是小编分享给大家全部内容了,希望能给大家一个参考。

1.9K20

python子类调用父初始化方法

如果一个方法在子类实例中被调用,或者一个属性在子类实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动去其父中进行查找。...继承父后,就能调用父方法和访问父类属性,而要完成整个集成过程,子类是需要调用构造函数。...子类不显式调用父构造方法,而父构造函数初始化了一些属性,就会出现问题 如果子类和父都有构造函数,子类其实是重写了父构造函数,如果不显式调用父构造函数,父构造函数就不会被执行,导致子类实例访问父初始化方法中初始变量就会出现问题...,其中第一句让A继承自object,这样才能使用super函数,因为这是python“新式”支持特性。...二、第二种解释     在Python子类继承父过程中,如果子类不覆盖父__init__()方法,则子类默认将执行与父一样初始化方法。

2.1K10

子类赋值父赋值兼容

C++ 中,类型匹配检测是非常严格,但是你会发现一个现象,如果一个继承了另外一个,把子类对象赋值给父时候,系统不但不提示错误,而且程序还能顺利编译通过并运行。...这其实就是 C++ 内部提供赋值兼容过程,但是要注意,如果子类数据成员比父多,则会出现数据截断。...“; cout << “start (“ << _x << “,” << _y << “)” << endl; } protected: int _x; int _y; }; // 继承 Shape ...cout << “radio r = “ << _r << endl; } private: int _r; }; int main(int argc, char* argv[]) { // 实例化一个父对象...Shape s(3, 5); s.draw(); // 实例化一个子类对象 Circle c(1, 2, 4); c.draw(); cout << “————————“ << endl; // 子类对象给父变量赋值

13030

子类继承父,父初始化

《Thinging in Java》引用 基础及衍生,而不再是以前一个,所以在想象衍生结果对象时,可能 会产生一些迷惑。...从外部看,似乎新拥有与基础相同接口,而且可包含一些额外方法和字段。但继承并非仅仅简单地复制基础接口了事。创建衍生一个对象时,它在其中包含了基础一个“子对象”。...这个子对象就象我们根据基础本身创建了它一个对象。从外部看,基础子对象已封装到衍生对象里了。...个人总结: super关键字必须写在构造方法方法体内非注释代码首行 子类进行初始化,必须调用父构造方法,如果父所有构造方法都用private修饰了的话,则无法继承,编译报错....衍生构造方法调用父构造方法,如果父是无参构造方法,那么编译器会为衍生构造方法首行加上super()。 编译器会强迫我们在衍生构建器主体中首先设置对基础构建器调用。

1.8K30

golang继承——接口父子类

从面向对象角度上看,总会有一些使用子类不想做,希望父去做事情,在java这样纯面向对象语言中,方法就是使用父子类子类通过继承父方法,实现子类自己属性,如果没有某个方法没有经过子类重写...,那么这个方法通过子类调用时,就会调用父方法。...简单说就子类能够按照父方法框架来设计,同时父还把一些子类自身个性化方法进行了抽象,抽象成golang中接口,通过实现接口实现了在指定方法上调用子类或者父(取决于子类是否重新实现了方法)...age:102 child add age ... rename ing... 104 --- PASS: TestDuoTai (0.00s) PASS 上面的代码说明了在go中如果使用父子继承关系...,同时也说明了在子类中自定义个性化方法同时,如何与父进行关联。

4.2K20

返回子类类型函数写法

this.retryLimit = retryLimit return this } abstract fun build(): PollingEvent } 我们有这么一个,...不过由于我们这个 Event 类型比较多,因此希望写一个父,来一个子类感受下: class DisposableEventBuilder : EventBuilder() { private....build() 我们调用完父 retryLimit 方法后,想要设置下 delay,结果发现没有这个方法。 “我 X,这什么玩意儿”,你嘟囔了一句。 因为返回是父,所以链式调用掉链子了。...,这个参数则必须是当前子类,那么这样的话我们就可以在返回自身类型位置返回 T 这个类型了。...子类改动就很简单了,只需要给父加一个泛型参数为自己类型即可: class DisposableEventBuilder : EventBuilder

4.7K10
领券