面向物件,繼承,多型,封裝1
阿新 • • 發佈:2018-11-20
---恢復內容開始---
繼承:
一個類可以被多個類繼承,一個類也可以有多個父類,父類裡面的方法屬性子類都可以用
1.單繼承
class Alimone:
#父類 def __init__(self, name, agree, hp, sex): self.name = name self.agree = agree self.hp = hp self.sex = sex def cat(self): #父類方法print('你好') self.hp+=100 class Dog(Alimone): #繼承父類 def __init__(self, name, agree, hp, sex, pi): 使用父類屬性的話,子類屬性裡面頁要新增父類的屬性 Alimone.__init__(self, name, agree, hp, sex) #使用父類屬性, self.pi = pi def cat(self): #子類方法 print('大你') a = Dog('旺財', 2, 300, '女', '泰迪') #例項化子類print(a.name) 可以呼叫自己的屬性 super(Dog,a).cat() 如果要呼叫父類的方法,需要使用super函式,裡面填子類,和子類物件 print(a.hp) 也可以呼叫父類的屬性
2多繼承
class A: 父類 def func(self): print('a') class B: def func(self): print('b') class C(A, B): 繼承兩個類 pass c = C() c.func() 呼叫方法是,先檢視自己本身有沒有,如果自己本身有這個方法,那麼就呼叫自己的方法,如果自己本身沒有,就找繼承父類的,先找A的,A類有就呼叫A類的,如果沒有在找B類的
"""
多繼承尋找名字的順序:新式類,廣度優先,經典類,深度優先
新式類中有個一個。mor的方法,檢視廣度優先的繼承順序
prthon3中,有個一個super方法根據廣度優先的順序,查詢上一類
"""
3.多型
python 天生就是多型的,
因為他有鴨子型別
鴨子型別:鴨子型別不是根據父類來約束,而是自己約束自己
4。封裝
封裝:廣義面向物件就是保護物件,讓物件不被外部呼叫
所以得私有方法都是加雙下劃線
私有屬性
私有方法
類中的靜態屬性
所有的私有方法都不能在外部呼叫
class Pereson:
def __init__(self, name, password):
self.name = name
self.__password = password # 把屬性私有化,私有屬性
def get(self):
return self.__password # 私有屬只能在內部使用,只要在類的內部使用私有屬性,就會自動的帶上下劃線類名
a = Pereson('小明', 1233)
print(a.name) # 直接呼叫不到私有化的屬性