'''
继承问题引入:
如果在两个类里面,有大量重复的代码,是否可以写出一个更抽象的类,将两个类重复的地方写在一起(放公共代码)
'''
class Base():#父类写不写括号,默认继承的都是object顶级父类
def __init__(self):
print("我是初始化的base")
def func(self):
print("我是base")
class A(Base): #括号里面写的父类的名字,A继承Base.
pass
a = A() #我是初始化的base,实例化时,触发父类初始化的方法.
a.func() #字类继承了父类,我是base
class Father():
def __init__(self,name,age):
self.name = name
self.age = age
class Son(Father):
def js(self):
print("我叫%s,我今年%s岁."%(self.name,self.age))
s = Son("露西",27) #字类继承了父类,继承了父类的属性.
s.js()#我叫露西,我今年27岁.
# -------------继承搜索----------------------------------------------
# 访问类的属性与方法,首先会在自己里面去找,如果找不到,转到其父类进行查找,如果再找不到转到其父类的父类中查找
class GrandFather():
def play(self):
print("我是爷爷")
class Father(GrandFather):
def lasr(self):
print("我是爸爸")
class Son(Father):
def js(self):
print("我是儿子")
a = Son()
a.play() #在Son该类中找不到paly方法,于是转到Son的父类Father类中去找,也找不到,于是转到Father的父类Grandfather类中去找.
print(GrandFather.__bases__)#默认继承顶级父类object
print(Father.__bases__)#继承GrandFather-(<class '__main__.GrandFather'>,)
print(Son.__bases__)#继承Father-(<class '__main__.Father'>,)