Python多继承时子类如何调用指定父类

 更新时间:2024年06月13日 10:42:26   作者:彭世瑜  
这篇文章主要介绍了Python多继承时子类如何调用指定父类问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Python多继承时子类调用指定父类

在Python中,如果一个子类继承自多个父类,并且这些父类都有相同名称的方法,你可以使用父类名直接调用指定父类的方法。

# -*- coding: utf-8 -*-

class Parent1:
    def my_method(self):
        print("Parent1's my_method")


class Parent2:
    def my_method(self):
        print("Parent2's my_method")


class Child(Parent1, Parent2):
    def call_parent1_method(self):
        Parent1.my_method(self)


if __name__ == '__main__':
    c = Child()
    c.call_parent1_method()  # 输出: Parent1's my_method

在上面的例子中,Child 类同时继承了 Parent1 和 Parent2。

如果你需要在 Child 的实例方法中调用 Parent1 的 my_method,你可以直接使用 Parent1.my_method(self) 来调用。

这里的 self 是用来指向子类实例的,确保方法可以访问到实例的属性。

Python子类继承父类构造函数说明

(1) 如果在子类中需要的构造方法就需要显示的调用父类的构造方法,或者不重写父类的构造方法。

子类不重写__init__,实例化子类时,会自动调用父类定义的__init__。

实例:

class Father(object):
    def __init__(self, age):
        self.age=age
        print ( "age: %d" %( self.age) )
    def getAge(self):
        print('父类的返回结果')
        return self.age
 
class Son(Father):
    def getAge(self):
        print('子类的返回结果:')
        return self.age
 
if __name__=='__main__':
    son=Son(18)
    print ( son.getAge() )

输出结果:

age: 18
子类的返回结果:
18

子类没有初始化__init__ 方法,所以默认会自动调用父类定义的__init__,因此会出现一行:age: 18

(2)如果重写了__init__ 时,实例化子类,就不会调用父类已经定义的 __init__

实例

class Father(object):
    def __init__(self, age):
        self.age=age
        print ( "age: %d" %( self.age) )
    def getAge(self):
        return self.age
 
class Son(Father):
    def __init__(self, age):
        print ( "hello world" )
        self.age =  age
    def getAge(self):
        return self.age
 
if __name__=='__main__':
    son=Son(18)
    print (son.getAge() )

输出结果:

hello world
18

子类有初始化__init__ 方法,则会调用自身的初始化方法,因此不会出现上面实例中那样的:age: 18

(3)如果重写了__init__时,要继承父类的构造方法,可以使用super关键字:

super(子类,self).__init__(参数1,参数2,....)

或者另一种经典的方法:

父类名称.__init__(self,参数1,参数2,...)

实例:

class Father(object):
    def __init__(self, age):
        self.age=age
        print ( "name: %s" %( self.age))
    def getage(self):
        return self.age
 
class Son(Father):
    def __init__(self, age):
#         super(Son, self).__init__(age)  # 1:super方法
        Father.__init__(self,age)         # 2: 经典方法
        print ("hello world")
        self.age =  age
    def getage(self):
        return self.age
 
if __name__=='__main__':
    son=Son(18)
    print ( son.getage() )

输出结果:

name: 18
hello world
18

可以看到,会出现父类中的初始化输出结果: name: 18,也会出现子类初始化中输出结果:hello world

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 浅谈python为什么不需要三目运算符和switch

    浅谈python为什么不需要三目运算符和switch

    下面小编就为大家带来一篇浅谈python为什么不需要三目运算符和switch。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • Windows64x下VScode下载过程

    Windows64x下VScode下载过程

    这篇文章主要介绍了Windows64x下VScode下载,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09
  • python实现不同电脑之间视频传输功能

    python实现不同电脑之间视频传输功能

    这篇文章主要介绍了python实现不同电脑之间视频传输,本文视频传输实现的前提是确保发送端和接收端接在同一个局域网下,分为发送端和接收端,通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2021-06-06
  • python3读取autocad图形文件.py实例

    python3读取autocad图形文件.py实例

    这篇文章主要介绍了python3读取autocad图形文件.py实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • 使用Python搭建虚拟环境的配置方法

    使用Python搭建虚拟环境的配置方法

    python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本带来的冲突,而且还能方便项目的发布。这篇文章主要介绍了使用Python虚拟环境,需要的朋友可以参考下
    2018-02-02
  • python爬虫爬取快手视频多线程下载功能

    python爬虫爬取快手视频多线程下载功能

    这篇文章主要介绍了python爬虫爬取快手视频多线程下载功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 在Python中关于使用os模块遍历目录的实现方法

    在Python中关于使用os模块遍历目录的实现方法

    今天小编就为大家分享一篇在Python中关于使用os模块遍历目录的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作

    Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作

    这篇文章主要介绍了Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作,涉及Python使用str.startswith()和str.endswith()方法针对字符串开始或结尾处特定文本匹配操作相关实现技巧,需要的朋友可以参考下
    2018-04-04
  • python执行shell并获取结果的详细示例

    python执行shell并获取结果的详细示例

    在Python中执行Shell命令并获取其结果,通常可以使用subprocess模块,这个模块允许我们启动新的进程,连接到它们的输入/输出/错误管道,并获取它们的返回码,下面是一个详细的示例,展示了如何使用subprocess.run()函数来执行Shell命令并获取其输出,需要的朋友可以参考下
    2024-07-07
  • 深入解析python中的实例方法、类方法和静态方法

    深入解析python中的实例方法、类方法和静态方法

    这篇文章主要介绍了python中的实例方法、类方法和静态方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论