多态
多态-单继承,多继承
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()
来源:https://www.cnblogs.com/uooo/p/15965871.html
本站部分图文来源于网络,如有侵权请联系删除。