day16 類的成員
阿新 • • 發佈:2018-11-07
成員 類中寫的內容就是成員
變數
1. 例項變數(成員變數, 欄位). 物件.xxx = xxx 例項變數 -> 欄位 -> 屬性. 給物件用的
2. 類變數. 直接寫在類中的變數就是類變數. 類變數一般用類名來訪問. 物件中共性的屬性提取出來.即所有該類的物件共享的的變數
class Person: country = "中國" # 類變數 def __init__(self,name, age): self.name = name self.ageView Code= age # Person.country = "大清" # print(Person.country) # 直接使用類名進行訪問 p1 = Person("alex", 185) p1.country = "大清" # 添加了一個例項變數 print(p1.name) print(p1.country) p2 = Person("wusir", 145) print(p2.name) print(p2.country) # 類變數的修改只能通過類名來完成
方法
1. 例項方法(成員方法). 物件直接訪問的方法 物件.方法()
class Computer: # 例項⽅法(成員⽅法) def play(self): print("我的電腦可以玩⼉") c = Computer() c.play() # 物件直接去調⽤例項⽅法View Code
2. 類方法. 需要在引數列表的第一位置預留位置, 引數起名cls,被呼叫時也不需要傳遞例項物件 新增@classmethod 類名.方法()
class Computer: def play(self): print("我的電腦可以玩⼉") @staticmethodView Codedef fare(): print("我的電腦⾮常⽜B, 可以煎雞蛋") @classmethod def cal(cls, a, b): print(cls) return a+b print(Computer.cal(1, 2)) # 此時會⾃動的把類名傳遞給類⽅法的第⼀個引數
3. 靜態方法. 不需要給方法傳遞self, 即出現一個方法不需要是使用成員變數的時候,選擇靜態方法 新增@staticmethod 類名.方法()
@staticmethod def fare(): print("我的電腦⾮常⽜B, 可以煎雞蛋") Computer.fare() # 類名可以直接訪問的 c.fare() # 物件也可以訪問. 但最好不要這麼⼲. 以便於區分靜態⽅法和例項⽅法View Code
屬性 @property
把方法轉化成屬性.
物件.屬性
注意事項: 1.方法引數只能有一個self
2.呼叫時不需要括號, 當屬性變數使用
3. 需要有返回值
4. 不能賦值
class User: def __init__(self, name, birthday, qq, email): self.name = name self.birthday = birthday self.qq = qq self.email = email # 方法 @property # 可以把一個方法變成一個屬性 def age(self): return 2018 - self.birthday ''' @property 1. 函式只能有一個self引數. 2. 需要有返回值 3. 不能賦值 4. 調⽤的時候, 我們不需要寫括號. 直接當成屬性變數來⽤就可以了 ''' u = User("王明", 1994, 1024663304, "[email protected]") print(u.age) u.qq = 10010 u.age = 18View Code
訪問私有變數 訪問私有方法
私有 (在python中,一般不提倡設定和使用私有資訊)
__作為字首
在自己類中可以隨意訪問. 但是出了類任何人都不可以訪問這個私有內容
但是通過公共方法可以訪問
訪問私有方法 class Person: def __init__(self): pass def __yue(self): print("我要約會") def job(self): print("我要⼯作") self.__yue() # 在⾃⼰類中訪問⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤ p = Person() p.job()