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

Python_子类调用父类的方法

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

4.9K20

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

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

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

    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.8K20

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

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

    1.9K20

    5.1 类、超类和子类

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

    1.1K90

    outputstream类或writer类的子类_java private

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

    53120

    python中子类调用父类的初始化方法

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

    2.2K10

    子类继承父类,父类的初始化

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

    1.9K30

    子类赋值父类的赋值兼容

    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; // 子类对象给父类变量赋值

    19530

    父类返回子类类型的函数写法

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

    4.8K10

    golang继承——接口父类子类

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

    4.6K20
    领券