1. 成員
在類中你能寫的所有內容都是類的成員
class Person: def __init__(self, name, gender): self.name = name # 成員 self.gender = gender # 成員 def run(self): # 成員 print(`會跑`)
2. 變數
1. 例項變數: 昨天寫的就是實力變數, 由物件去訪問的變數.
2. 類變數. 此時. 這個變數屬於類. 但是物件也可以訪問.
class Person: contry = `中國` def __init__(self, name, gender): self.name = name self.gender = gender p = Person(`Tom`, `男`) p1 = Person("Jerry", `男`) print(p.name) # p1.contry = `美國` # print(p1.contry) # 美國 # print(p.contry) # 中國 Person.contry = `大中國` print(p1.contry) # 大中國 print(p.contry) # 大中國
3. 方法
1. 例項方法: 昨天寫的就是例項方法. 使用 物件.方法()
特點: 在宣告的時候. 需要給出self, self必須放在第一個位置
在呼叫的時候. 自動的會把物件傳遞給形參的self
2. 類方法(@classmethod): 類方法是屬於類的.
特點:在宣告的時候需要給出一個能夠接受類名的引數, cls , 也必須放在引數的第一個
在呼叫的時候. 自動得把xx物件的類傳遞給cls
class Person: # 例項方法 def chi(self): print(`人會吃`) @classmethod def he(cls): print(`人會喝`) # # 用物件訪問 # p = Person() # p.he() # 在呼叫類方法的時候, 預設的把類名傳遞給類方法 # print(Person) # 類方法一般用類名去訪問 Person.he() # 類方法 #人會喝
3. 靜態方法(@staticmethod): 靜態方法也是屬於類的. 靜態方法就好比. 我們在類中定義了一個函式
靜態方法一般和類方法差不多. 使用類名去訪問
class Person: @staticmethod # 靜態方法 def he(): print(`人會喝`) # # 靜態方法可以使用物件訪問, 也可以使用類名訪問. 推薦使用類名訪問 # p = Person() # p.he() # 人會喝 # 類名訪問 Person.he() # 人會喝
4. 屬性
在方法上新增一個@property. 可以把一個方法變成一個屬性. 但是這個屬性不可以被賦值
當我們某一個屬性必須經過計算才能得到結果的時候.
class Person: def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth @property # 把一個方法更改為一個屬性,每次拿屬性都會執行這個方法,方法返回值是屬性 def age(self): print(`我是方法`) return 2018 - self.birth p1 = Person(`Jerry`, `男`, 1994) print(p1.name) # Jerry print(p1.age) # 我是方法 24 print(p1.age) # 我是方法 24
5. 私有
所有以雙下劃線開頭的方法, 變數都是私有內容. 外界無法訪問. 除非你主動暴露這些內容