Python教程

python继承

本文主要是介绍python继承,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

多态

多态-单继承,多继承

class master1(object):
    def __init__(self):
        self.konfu="古法制作"
    def make(self):
        print(f'{self.konfu}美味豆腐')
class master2(object):
    def __init__(self):
        self.konfu="简单制作"
    def make(self):
        print(f'{self.konfu}美味海鲜')


# 验证单继承
class apprentic1(master1):
    pass

t1=apprentic1()
# 对象访问实例属性
print(t1.konfu)
# 实例
t1.make()

# 验证多继承
class apprentice2(master1,master2):
    pass
t2=apprentice2()
print(t2.konfu)
t2.make()
# 一个类继承多个类,默认第一个父类的属性和功能方法

单继承重写(修改)父类同名属性和方法

class master1(object):
    def __init__(self):
        self.konfu="古法制作"
    def make(self):
        print(f'{self.konfu}美味豆腐')

# 验证单继承重定义修改父类同名属性和方法
class apprentic1(master1):
    def __init__(self):
        self.konfu = "最新独创法制作"
    def make(self):
        print(f'{self.konfu}更美味可口豆腐')

t1=apprentic1()
# 对象访问实例修改的属性
print(t1.konfu)
# 修改的方法实例
t1.make()

查看该类继承了那些父类

  • 方法解析顺序, Method Resolution Order
class master1(object):
    pass
class apprentic1(master1):
    pass
class stu(apprentic1):
    pass
print(stu.__mro__)
# 输出
# (<class '__main__.stu'>, <class '__main__.apprentic1'>, <class '__main__.master1'>, <class 'object'>)

单继承重写(修改)父类同名属性和方法后,如何再调用父类属性

# self在定义时需要定义,但是在调用时会自动传入。
# self的名字并不是规定死的,但是最好还是按照约定是用self
# self总是指调用时的类的实例。
class master1(object):
    def __init__(self):
        self.konfu="古法制作"
    def make(self):
        print(f'{self.konfu}美味豆腐')

# 验证单继承重定义修改父类同名属性和方法
class apprentic1(master1):
    def __init__(self):
        self.konfu = "最新独创法制作"
    def make(self):
        # 如果是先调用了了父类的属性和方法,父类属性会覆盖子类属性,故在调用属性前,先调用自己子类的初始化
        # 加自己的初始化!!!!
        # 否则导致输出为古法
        # 属性值是上一次调用的init调用的属性值,所以如果没有他就输出古法
        self.__init__()
        print(f'{self.konfu}更美味可口豆腐')
    def makemaster(self):
        master1.__init__(self)
        master1.make(self)


t1=apprentic1()
# 对象访问实例修改的属性
print(t1.konfu)
# 修改的方法实例
t1.make()
# 如何通过t1调用父类没修过的方法
t1.makemaster()
# 如果make不自己定义,仍会输出古法的了
t1.make()

这篇关于python继承的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!