本文主要是介绍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继承的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!