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

使用super()的子类构造函数-获取未绑定的方法__init__()

使用super()的子类构造函数-获取未绑定的方法init()

在Python中,当我们定义一个子类时,可以使用super()函数来调用父类的构造函数。通过调用父类的构造函数,子类可以继承父类的属性和方法,并且可以在子类的构造函数中添加额外的逻辑。

在子类的构造函数中,可以使用super()函数来获取未绑定的父类方法init()。未绑定的方法是指该方法没有绑定到任何对象上,可以在需要的时候手动绑定到一个对象上进行调用。

下面是一个示例代码:

代码语言:txt
复制
class ParentClass:
    def __init__(self, name):
        self.name = name

    def say_hello(self):
        print("Hello, " + self.name)


class ChildClass(ParentClass):
    def __init__(self, name, age):
        super().__init__(name)  # 调用父类的构造函数
        self.age = age

    def call_parent_method(self):
        super().__init__("Parent")  # 获取未绑定的父类方法__init__()
        super().say_hello()  # 调用未绑定的父类方法say_hello()


child = ChildClass("Child", 10)
child.call_parent_method()

在上面的代码中,ChildClass继承了ParentClass,并在自己的构造函数中使用super()函数调用了父类的构造函数。在call_parent_method()方法中,使用super()函数获取了未绑定的父类方法init()和say_hello(),并进行了调用。

使用super()函数的优势是可以确保父类的构造函数被正确调用,并且可以在子类的构造函数中添加额外的逻辑。这样可以避免重复编写父类的初始化代码,提高代码的复用性和可维护性。

使用super()函数的应用场景包括但不限于:

  1. 子类需要继承父类的属性和方法,并在自己的构造函数中进行初始化。
  2. 子类需要在自己的构造函数中添加额外的逻辑,同时保留父类的初始化逻辑。
  3. 子类需要调用父类的方法,包括未绑定的方法。

腾讯云相关产品和产品介绍链接地址:

腾讯云提供了丰富的云计算服务和解决方案,以下是一些相关产品和介绍链接地址:

  1. 云服务器(Elastic Compute Cloud,简称CVM):提供弹性、可扩展的云服务器实例,满足不同规模和需求的计算资源需求。详情请参考:云服务器产品介绍
  2. 云数据库MySQL版(TencentDB for MySQL):提供高性能、可扩展的云数据库服务,支持MySQL数据库引擎,适用于各种规模的应用场景。详情请参考:云数据库MySQL版产品介绍
  3. 人工智能平台(AI Platform):提供丰富的人工智能服务和工具,包括图像识别、语音识别、自然语言处理等,帮助开发者构建智能化的应用。详情请参考:人工智能平台产品介绍

请注意,以上链接仅供参考,具体的产品和解决方案选择应根据实际需求进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

构造函数调用子类方法,写过吗?

为什么Base构造函数与虚构函数即使调用虚函数,也是调自己函数呢?这跟构造函数与虚构函数调用顺序有关。子类对象构造时候,先调父类构造函数初始化父类,再调子类构造函数初始化子类。...子类对象虚构时候,恰恰相反,先调子类对象虚构函数,再调父类虚构函数。输出结果也证明了这点。 所以如果父类构造函数与虚构函数是调用子类函数,那就非常危险了。...因为父类构造函数执行时,子类构造函数还没有执行,说明子类还没有初始化,而这时就调用子类方法,很容易出错,甚至崩溃。...父类虚构函数执行时候,子类虚构函数已经执行完毕,说明子类资源已经被释放,而这时继续执行子类方法,也很容易崩溃。于是,C++规范为此作了此约束。...如果真的很想在构造函数内调用子类方法进行初始化,还是显示提供一个初始化函数,让子类对象实例化完后,显示调用初始化函数

1.4K20

创建子类对象时,父类构造函数中调用被子类重写方法为什么调用子类方法

static void main(String[] args) { A a = new A(); B b = new B(); } } 问题:为什么创建A对象时候父类会调用子类方法...但是:创建B对象父类会调用父类方法? 答案: 当子类被加载到内存方法区后,会继续加载父类到内存中。...如果,子类重写了父类方法子类方法引用会指向子类方法,否则子类方法引用会指向父类方法引用。 如果子类重载了父类方法,则子类重载方法引用还指向子类方法。...如果子类方法没有重写也没有重载父类方法,则方法引用会指向父类方法。 当子类对象创建时,会先行调用父类构造方法构造方法也是方法),虚拟机会在子类方法区寻找该方法并运行。...其结果是当编译时候,父类构造方法调用方法参数已经强制转换为符合父类方法参数了。 上边代码在编译前已经转换为下面这个样子了。

6.2K10
  • 关于Java构造函数(Constructor)常见问题总结1 为什么调用子类构造方法时候,默认会调用父类构造方法2 常见错误:Implicit super constructor is und

    这篇文章总结了Java使用构造函数中最常遇到五个问题!...1 为什么调用子类构造方法时候,默认会调用父类构造方法 看下面这个简单例子: package cc; public class Sub extends Super { public Sub...编译器自动插入super构造方法后,子类构造函数就会像下面这样: public Sub(){ super(); System.out.println("Sub"); } 2 常见错误:...上一小节,我们知道,如果子类构造函数中,没有显示调用父类构造函数,那么,编译器就会插入super(),也就是自动调用无参构造函数。但是此时,父类没有无参构造函数,所以就会报错了。...Paste_Image.png 构造函数使用规则 简单说,在使用时候,子类构造函数必须调用父类构造函数,不管有没有显示声明。所以,被调用父类构造函数,一定在定义好!

    2.9K41

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

    子类不显式调用父类构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类和父类都有构造函数子类其实是重写了父类构造函数,如果不显式调用父类构造函数,父类构造函数就不会被执行,导致子类实例访问父类初始化方法中初始变量就会出现问题...有两种方法能达到这个目的:调用超类构造方法绑定版本,或者使用super函数。...这种方法叫做调用父类绑定构造方法。在调用一个实例方法时,该方法self参数会被自动绑定到实例上(称为绑定方法)。但如果直接调用类 方法(比如A.__init),那么就没有实例会被绑定。...这样就可以自由提供需要self参数,这种方法称为绑定unbound方法。 通过将当前实例作为self参数提供给绑定方法,B类就能使用其父类构造方法所有实现,从而namea变量被设置。...方法一更直观,方法二可以一次初始化所有超类 super函数比在超累中直接调用绑定方法更直观,但是其最大有点是如果子类继承了多个父类,它只需要使用一次super函数就可以。

    2.2K10

    Python类继承和方法重写总结

    为了达到预期效果,SongBird构造方法必须调用父类构造方法来确保进行基本初始化。有两种方法能达到这个目的:调用超类构造方法绑定版本,或者使用super函数。...调用超类构造方法绑定版本 >>> class SongBird(Bird): ...     def __init__(self): ...         Bird....__init__),就没有实例被绑定,这样方法称为绑定方法。 通过将当前实例作为self参数提供给绑定方法,SongBird类就能使用其超类构造方法所有实现。...Super函数 Super函数只能在新式类使用。当前类和对象可以作为super函数参数使用,调用函数返回对象任何方法都是调用超类方法,而不是当前类方法。...那么就可以不用在SongBird构造方法使用Bird,而直接使用super(SongBird,self)注意是逗号,不是.

    2.9K10

    【Kotlin】Kotlin 类继承 三 ( super 关键字使用 | super@ 外部调用父类方法 | 子类选择性调用 父类 接口 方法 super )

    子类重写父类方法 : 如果属性 或 方法子类重写了 , 那么就需要使用 super 关键字调用父类属性或方法 ; 4 . super 关键字调用需要考虑情况 : ① 常用情况 : 最常用情况只使用...super 关键字进行简单调用即可 ; ② 子类内部类调用父类 : 如果想要在子类内部调用父类成员和方法 , 需要使用 super@子类名称 调用 ; ③ 子类调用不同父类同名方法 : 如果子类继承父类.../ 实现接口有相同名称属性 / 方法 , 就需要使用 super 形式调用指定 父类 / 接口方法 ; II ....子类内部类调用父类方法 ( super@ ) ---- 子类内部类调用父类方法 : 在子类内部类中 , 如果想要访问父类方法 , 可以使用 super@子类名称.父类方法() 形式 , 调用父类方法...子类选择性调用父类 / 接口方法 : 子类可以继承父类 , 实现多个接口 , 如果父类与接口 , 或者不同接口之间定义了相同名称方法 , 那么需要使用 super.方法名() 选择调用指定

    1.5K10

    《Python基础教程》 读书笔记 第九章 魔法方法、属性和迭代器 (上)

    构造方法用来初始化新创建对象状态,大多数子类不仅要拥有自己初始化代码,还要拥有超类初始化代码。...为了达到预期效果,SongBird构造方法必须调用其超类Bird构造方法来确保进行基本初始化。有两种方法能达到这个目的:调用超类构造方法绑定版本,或者使用super函数。...调用绑定超类构造方法 >>> class SongBird(Bird): ... def __init__(self): ... Bird....这样方法称为绑定(unbound)方法 使用super函数 当前类和对象可以作为super函数参数使用,调用函数返回对象任何方法都是调用超类方法,而不是当前类方法。...__setitem__(self,key,value):这个方法应该按一定方式存储和key相关value,该值随后可使用__getitem__来获取。当然,只能为可以修改对象定义这个方法

    52330

    Python实现子类调用父类方法

    有如下两种解决方案: 方法一:调用绑定父类构造方法 class Person(object): def __init__(self): self.name = "Tom"...: return self.age if __name__ == "__main__": stu = Student() print stu.getName() 这种方法叫做调用父类绑定构造方法...通过将当前实例作为self参数提供给绑定方法,Student类就能使用其父类构造方法所有实现,从而name变量被设置。...方法二:使用super函数 class Person(object): def __init__(self): self.name = "Tom" def getName...方法一更直观,方法二可以一次初始化所有超类. super函数比在超累中直接调用绑定方法更直观,但是其最大有点是如果子类继承了多个父类,它只需要使用一次super函数就可以。

    3.1K10

    Python编程思想(27):类继承

    使用绑定方法调用被重写方法 如果在子类中调用重写之后方法,Python总是会执行子类重写方法,不会执行父类中被重写方法。如果需要在子类中调用父类中被重写实例方法,那该怎么办呢?...使用 super函数调用父类构造方法 Python子类也会继承得到父类构造方法,如果子类有多个直接父类,那么排在前面的父类构造方法会被优先使用。...Python要求:如果子类重写了父类构造方法,那么子类构造方法必须调用父类构造方法子类构造方法调用父类构造方法有两种方式。 使用绑定方法,这种方式很容易理解。因为构造方法也是实例方法。...当然可以通过这种方式来调用; 使用supe()函数调用父类构造方法; 在交互式解释器中输入help(super)查看 super()函数帮助信息,可以看到如下输出信息。...__init__(salary) # 使用绑定方法调用父类构造方法 Customer.

    1.3K10

    Python面向对象总结及类与正则表达式

    其次,方法只有在其所属类拥有实例时,才能被调用。当一个类存在实例后,方法才被认为是绑定到这个实例。没有实例时候,方法绑定。   ...调用绑定方法通常是在我们继承了一个父类后, 我们覆盖了父类中某个方法,但是为了实现代码重用,我们又想在子类中调用父类方法。...,如果既想执行父类中方法同时在子类中又能定义新功能,就需要先把父类中这个方法单独继承过来,在python中只能使用父类名.方法名(self,父类其他参数)方式,在python3中可以使用super...函数来实现,比如super().父类方法名(除self外其他参数),其实在super函数中还需要传入子类名和子类对象(在类中用self),但是我们使用时不需要特意去传,除非在类外单独调用父类方法。...六、抽象类    抽象类作用和接口类一样,只是继承它子类一般存在一些逻辑上关系,且抽象类中方法可以去实现,子类在重写时用super函数调用抽象类方法即可,同时在用抽象类时使用单继承,使用接口类时使用多继承

    47430

    Python快速学习第七天

    为了达到预期效果,SongBird构造方法必须调用其超类Bird构造方法来确保进行基本初始化。有两种方法能达到这个目的:调用超类构造方法绑定版本,或者使用super函数。...9.2.2 调用绑定超类构造方法 本节所介绍内容只要是历史遗留问题。在目前版本Python中,使用super函数(下一节会介绍)会更为简单明了(在Python3.0中更是如此)。...为什么super函数这么超级 在我看来,super函数比在超类中直接调用绑定方法更直观。但这并不是它唯一优点。...内部具体工作原理不用理解,但必须清楚地知道:在大多数情况下,使用新式类和super函数是比调用超类绑定构造方法(或者其他方法)更好选择。 那么,super函数到底返回什么?...☑ 重写:一个类能通过实现方法来重写它超类中定义这些方法和属性。如果新方法要调用重写版本方法,可以从超类(旧式类)直接调用绑定版本或使用super函数(新式类)。

    2.3K50

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

    前言 python中进行面向对象编程,当在子类实例中调用父类属性时,由于子类__init__方法重写了父类__init__方法,如果在子类中这些属性未经过初始化,使用时就会出错。...方法一: 调用绑定父类__init__方法 在类方法定义时,首个参数均为self。当实例化这个类时,self就被自动绑定到当前实例。绑定也就意味着这个实例属性,方法都可以通过‘self....***方式进行调用。但是如果通过类名直接调用类方法,self参数就不会被自动绑定到实例上,可以绑定到我们指定实例上。也就是子类实例上,在这里就是类B了。...所以这里所说绑定父类__init__方法 就是指绑定父类实例父类__init__方法。...方法二:调用super函数 super函数是用于调用父类一个方法,主要是用于解决多继承问题,避免多继承带来一些问题,当然也可以用来解决单继承问题,调用父类__init__方法了。

    2K20

    Java中构造函数、setget方法和toString方法使用及注意事项

    参考链接: 可以重写Java中私有方法吗 一、构造函数 构造函数最大作用就是创建对象时完成初始化,当我们在new一个对象并传入参数时候,会自动调用构造函数并完成参数初始化。...上面说到构造函数是为了在new对象传入参数后完成属性初始化。但是 ,为什么我程序中不写构造函数依然可以完成初始化。 1.如果不写构造函数,程序会自动生成一个无参数无操作构造函数(默认,隐藏)。...二、set()/get()方法 我们先来看看set和get这两个词表面意思,set是设置意思,而get是获取意思,顾名思义,这两个方法是对数据进行设置和获取。...("Wade");         //又可以调用无参构造函数实例化对象         Test01 t1=new Test01();     //使用set()方法给属性赋值         t.setName...("CP3");     //传统方式赋值         t1.name="Rose";     //使用get()方法获取属性值         System.out.println("t:"+

    1.9K20

    Python3快速入门(六)——Pyth

    子类需要在自己__init__方法第一行位置调用父类构造方法,上述代码给出了两种方法super(子类名, self).__init__(父类构造参数),如super....Python虽然支持多继承,但Python对多继承支持也是有限。 多继承时,使用super只会调用第一个父类属性方法,因此,要想调用特定父类构造器只能显式调用父类名.__init__。...如果父类中有相同方法名,而在子类使用显式指定调用具体赋类方法,Python会根据继承顺序从左至右搜索查找父类中是否包含方法。...,而子类没有自己构造函数时,按顺序继承,哪个父类在最前面且有自己构造函数,就继承其构造函数。...,而子类没有自己构造函数时,如果最前面第一个父类没有构造函数,则依次查找后序继承父类构造函数

    1.3K20

    Python3 面向对象编程进阶

    2.1 类变量总结 3 获取对象信息 3.1 使用 type() 3.2 使用 isinstance() 3.3 使用 dir() 3.4 小结 4 继承和多态 4.1 super() 函数 4.2...第一种方法 init() 方法是一种特殊方法,被称为类构造函数或初始化方法,当创建了这个类实例时就会调用该方法。...super() 函数 在前面的知识中,我们知道,当子类如果有和父类同名方法时,那就会覆盖掉父类同名方法,但有时,我们希望能同时实现父类功能,调用父类同名方法有两种方式: 1,调用绑定父类方法...__init__') 2,使用 super() 函数来调用。...super() 最常见用法是在子类中调用父类初始化方法 __init__(),从而确保父类被正确初始化了;super() 另外一个常见用法出现在覆盖 Python 特殊方法代码中。

    42210

    课时38:类与对象:继承

    目录:   一、继承   二、调用绑定父类方法   三、使用super函数   四、多重继承   五、课时38课后习题及答案 现在需要扩展游戏,对鱼类进行细分,有金鱼(Goldfish)、三文鱼(Salmon...下面介绍两种可以实现技术: (1)调用绑定父类方法 (2)使用super函数 ******************************* 二、调用绑定父类方法 **************...Fish实例对象,而是子类Shark实例对象,所以这里说绑定是指并不需要绑定父类实例对象,使用子类实例对象代替即可。...在Python中有一个更好方案可以代替它,就是使用super函数。...********************** 三、使用super函数 **********************  super函数能够帮我们自动找到基类方法,而且还为我们传入了self参数,这样就不需要做这些事了

    37250

    PHP实现获取毫秒时间戳方法使用microtime()函数

    本文实例讲述了PHP实现获取毫秒时间戳方法。...分享给大家供大家参考,具体如下: PHP获取毫秒时间戳,利用microtime()函数 php本身没有提供返回毫秒数函数,但提供了一个microtime()函数,借助此函数,可以很容易定义一个返回毫秒数函数...php毫秒是没有默认函数,但提供了一个microtime()函数,该函数返回包含两个元素,一个是秒数,一个是小数表示毫秒数,借助此函数,可以很容易定义一个返回毫秒数函数,例如: function...$millisecond; 运行结果: 20190301013407194 需要注意,在32位系统中phpint最大值远远小于毫秒数,所以不能使用int类型,而php中没有long类型,所以只好使用浮点数来表示...由于使用了浮点数,如果精度设置不对,使用echo显示获取结果时可能会不正确,要想看到输出正确结果,精度设置不能低于13位。

    7.9K21
    领券