1、組合是使用其他的類例項作為自己的乙個屬性(has-a關係);
class doginfo():
def __init__(self, name, age):
self.name = name
self.age = age
def p_info(self):
print("name is {}, age is {}.".format(self.name, self.age))
class dog():
def __init__(self, name, age):
self.info = doginfo(name, age) # has a doginfo
def change_name(self, name):
self.info.name = name
def p_info(self):
self.info.p_info()
dog = dog("dido", 4)
dog.change_name("tom")
dog.p_info()
# 執行結果
name is tom, age is 4.
2、子類繼承父類的屬性和方法(is a 關係);
(1) 子類不重寫父類的構造方法(__init__)和方法,例項化子類時,會自動呼叫父類定義的__init__和方法。
# 子類不重寫父類的構造方法(__init__)和方法,例項化子類時,會自動呼叫父類定義的__init__和方法
class father():
def __init__(self, name):
self.name = name
print("name: %s" % self.name)
def getname(self):
return "father: " + self.name
class son(father):
pass
if __name__ == "__main__":
son = son("麻花")
print(son.getname())
# 執行結果:
name: 麻花
father: 麻花
(2) 重寫父類的構造方法(__init__)和方法,例項化子類時,就不會呼叫父類已定義好的__init__和方法。
# 重寫父類的構造方法(__init__)和方法,例項化子類時,就不會呼叫父類已定義好的__init__和方法
class father():
def __init__(self, name):
self.name = name
print("name: %s" % self.name)
def getname(self):
return "father: " + self.name
class son(father):
def __init__(self, name):
print("hello")
self.name = name
def getname(self):
return "son: " + self.name
if __name__ == "__main__":
son = son("麻花")
print(son.getname())
# 執行結果:
hello
son: 麻花
(3) 如果重寫了父類的構造方法(__init__)和方法,要繼承父類的構造方法__init__和方法,可以使用 super 關鍵字。
# 如果重寫了父類的構造方法(__init__)和方法,要繼承父類的構造方法__init__和方法,可以使用 super 關鍵字
class father():
def __init__(self, name):
self.name = name
print("name: %s" % self.name)
def getname(self):
return "father: " + self.name
class son(father):
def __init__(self, name):
print("hello")
# super(son, self).__init__(name)
father.__init__(self, name)
def getname(self):
# return super(son, self).getname()
return father.getname(self)
if __name__ == "__main__":
son = son("麻花")
print(son.getname())
# 執行結果:
hello
name: 麻花
father: 麻花
3、優先使用組合保持**簡單。 Python 物件導向 繼承 組合
1.組合將自定義類的物件作為類的屬性class teacher def init self,name self.name name class student def init self,name,teacher self.name name self.teacher teacher tec tea...
物件導向繼承 寄生式組合繼承
2.子類建構函式 function ministudent name,age,混合繼承 物件冒充 建構函式中屬性和方法 原型鏈繼承 繼承原型物件中屬性和方法 4.原型鏈繼承 object.create 以原型為基礎建立物件 ministudent.prototype object.create st...
python 面向繼承物件 繼承
1.python物件導向的繼承指的是多個類之間的所屬關係,即預設繼承父類的所有屬性和方法。2.注意 當乙個類有多個父類的時候,預設使用第乙個父類的同名屬性和方法。3.檢視某個類的繼承關係 物件.mro 4.子類呼叫父類的同名方法和屬性 class a object definit self self...