Python之面向物件
阿新 • • 發佈:2020-07-27
面向物件:
~Python是一門面向物件的語言。類(class)是一種抽象的模板,例項(instance)是根據類建立的具體物件,每個物件都有相同的方法,只不過傳入的資料可能不一樣。
~類裡面一般包含屬性和方法,你可以簡單的理解為屬性為靜態的,方法為動態的。比如class person:這個類手、腳、眼睛這些為屬性,而走路、看書等為方法。
~由於類可以起到模板的作用,因此,可以在建立例項的時候,把一些我們認為必須繫結的屬性強制填寫進去。通過定義一個特殊的__init__
方法,在建立例項的時候,就把各~種屬性綁上去
~而__init__
方法的第一個引數永遠是self
,表示建立的例項本身,因此,在__init__
方法內部,就可以把各種屬性繫結到self
,因為self
就指向建立的例項本身。
•建立
建立一個person的類:
1 class person: 2 def __init__(self,name,weight,hight,country): 3 self.name=name 4 self.weight=weight 5 self.hight=hight 6 self.country=country
傳入一個例項
1 a=person("y",179,180,"china")
1 a.country#獲取person中country這個屬性
china
建立一個預設屬性
1 class person: 2 country="china"#shared by all instance 3 def __init__(self,name,weight,hight): 4 self.name=name 5 self.weight=weight 6 self.hight=hight
1 a=person("y",179,180)
1 a.country
'china'
亦或寫成
1 class person: 2 def __init__(self,name,weight,hight):3 self.name=name 4 self.weight=weight 5 self.hight=hight 6 self.country="china"
建立一個既有屬性又有方法的類
1 class person: 2 def __init__(self,name,weight,hight): 3 self.name=name 4 self.weight=weight 5 self.hight=hight 6 self.country="china" 7 def judge_weight(self,weight): 8 if weight>160: 9 print("超重") 10 elif weight>120: 11 print("標準") 12 else: 13 print("偏瘦")
1 a=person("y",179,180)
1 a.judge_weight(110)
偏瘦
•繼承
一個類繼承另一個類時,它將自動獲得另一個類的屬性和方法;原有的類稱為父類,而新的類稱為子類。
1 class huge(person): 2 pass#完全繼承
1 a=huge("y",179,180) 2 a.name
'y'
多型
子類繼承了其父類的所有屬性和方法,同時也可以定義自己的屬性和方法。
用super().__init__去初始化父類super()將返回當前類繼承的父類,__init__初始化方法。
1 class huge(person): 2 def __init__(self,name,weight,hight,skill):#寫出子類的所有屬性 3 super().__init__(name,weight,hight)#子類所繼承的父類屬性 4 self.skill=skill#子類自己的屬性 5 pass
1 a=huge("y",179,180,"fly") 2 a.skill
'fly'
方法過載:當父類的方法不符合子類的需求時,可以重新定義一個方法,即它與重寫的父類方法同名,即覆蓋了父類的方法。
1 class huge(person): 2 def __init__(self,name,weight,hight,skill):#寫出子類的所有屬性 3 super().__init__(name,weight,hight)#子類所繼承的父類屬性 4 self.skill=skill#子類自己的屬性 5 def judge_weight(self,hight): 6 if hight>180: 7 print("高") 8 elif hight>170: 9 print("中") 10 else: 11 print("矮") 12
1 a.judge_weight(170)
矮