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脚本检测笑脸漏洞的问题复现

    Python脚本检测笑脸漏洞的问题复现

    Python脚本有效检测vsftpd2.3.4版本中的笑脸漏洞,该漏洞存在于6200端口,允许任何人连接,输入带有特定表情符号的用户名和任意密码即可触发,本文介绍了环境搭建、漏洞扫描和利用过程,通过nc命令演示了漏洞复现步骤
    2024-10-10
  • python程序运行添加命令行参数argparse模块具体用法详解

    python程序运行添加命令行参数argparse模块具体用法详解

    这篇文章主要给大家介绍了关于python程序运行添加命令行参数argparse模块具体用法的相关资料,argparse是Python内置的一个用于命令项选项与参数解析的模块,通过在程序中定义好我们需要的参数,需要的朋友可以参考下
    2024-01-01
  • Python文件路径处理模块pathlib示例详解

    Python文件路径处理模块pathlib示例详解

    pathlib是跨平台的、面向对象的路径操作模块,可适用于不同的操作系统,其操作对象是各种操作系统中使用的路径,下面这篇文章主要给大家介绍了关于Python文件路径处理模块pathlib的相关资料,需要的朋友可以参考下
    2023-04-04
  • python实现画桃心表白

    python实现画桃心表白

    这篇文章主要介绍了python实现画桃心表白的代码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • Python爬虫之爬取哔哩哔哩热门视频排行榜

    Python爬虫之爬取哔哩哔哩热门视频排行榜

    这篇文章主要介绍了Python爬虫之爬取哔哩哔哩热门视频排行榜,文中有非常详细的代码示例,对正在学习python的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-04-04
  • python中plot实现即时数据动态显示方法

    python中plot实现即时数据动态显示方法

    这篇文章主要为大家详细介绍了python中plot实现即时数据动态显示方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • python使用装饰器和线程限制函数执行时间的方法

    python使用装饰器和线程限制函数执行时间的方法

    这篇文章主要介绍了python使用装饰器和线程限制函数执行时间的方法,主要涉及timelimited函数的使用技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • 使用wxPython创建一个文件夹结构生成器

    使用wxPython创建一个文件夹结构生成器

    这篇文章主要为大家详细介绍了如何利用 wxPython 来创建一个文件夹结构生成器,帮助大家自动化地创建文件夹和文件结构,有需要的可以了解下
    2024-11-11
  • Python方法返回2个值详细代码示例

    Python方法返回2个值详细代码示例

    在Python中函数可以返回多个值,这通常是通过返回一个元组来实现的,下面这篇文章主要给大家介绍了关于Python方法返回2个值的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • python模拟事件触发机制详解

    python模拟事件触发机制详解

    这篇文章主要为大家详细介绍了python模拟事件触发机制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论