面向物件二 成員
本節主要內容:
1. 類的成員
2. 類的成員-變量
3. 類的成員-方法
4. 類的成員-屬性
5. 私有
一. 類的成員:
首先, 什麼是類的成員. 很簡單. 你能在類中寫什麼? 寫的內容就是成員. 到目前為止. 我們 已經學過了一些成員了.
class 類名:
# 方法 def __init__(self, 引數1, 引數2....):
# 屬性變數量
self.屬性1 = 引數1
self.屬性2 = 引數2 .... # 方法
def method(self):
pass
在上⾯面程式碼中__init__和method都屬於類的成員⽅方法. 又稱為例項方法. 總之這樣的東西 需要用物件來訪問. 而上方的self.屬性1 = 引數1 這個程式碼的含義是給物件設定屬性資訊. 含 義是這個物件的xxx屬性是xxxx. 這種東西又被稱之為成員變數或者例項變數量, 再或者被稱之 為欄位. 都是⼀個意思.
二. 類的成員-變數
1. 例項變量(欄位)
2. 類變量(靜態變數)
class Person: # 類變數量, 表示所有的該類的物件都共享這個變數量.
country = "中國"
def __init__(self, name, num, birthday): # 例項例變數量(欄位) 表示你建立的每⼀一個⼈人都有這三個變數量
self.name = name
self.num = num
self.birthday = birthday
p1 = Person("alex", 18, "1840年年06⽉月01⽇日")
print(p1.name) # alex print(p1.country) #中國
p2 = Person("wusir", 28, "1894年年07⽉月25⽇日")
print(p2.name) # wusir print(p2.country) # 中國
我們發現物件p1和p2的name都是物件⾃自⼰己的. 但是country是類的. ⼤大家公⽤用同⼀一個變數量. 如何來驗證呢?
Person.country = "⼤大清" # 在這⾥裡里. 我把國家改成了了⼤大清
p1 = Person("alex", 18, "1840年年06⽉月01⽇日")
print(p1.name)
print(p1.country) # alex是⼤大清的
p2 = Person("wusir", 28, "1894年年07⽉月25⽇日")
print(p2.name)
print(p2.country) # wusir也是大清的
例項變數, 給物件用的. 類變數, 多個物件共享的. 最好是用類名來訪問. 這樣更加規範.
二. 類的成員-方法
class Computer: # 例項方法(成員⽅方法)
def play(self):
print("我的電腦可以玩兒")
c = Computer()
c.play() # 物件直接去呼叫例項方法
靜態方法. 靜態方法不需要我們給方法傳遞self. 也就是說. 當出現⼀個方法不需要使用到 成員變數量的時候. 就可以選擇使⽤用靜態方法. 靜態方法需要我們在⽅方法上⾯面新增⼀一 個@staticmethod
類⽅方法. 類⽅方法和靜態⽅方法差不多, 只不過類⽅方法需要在引數列列表中的第⼀一個位置預留留⼀一 個位置, 通常我們給第⼀一個引數起名字叫cls. 類⽅方法在被調⽤用的時候也不需要傳遞例項例物件. 但是. 系統會⾃自動的把類傳遞給第⼀一個引數. 類⽅方法在編寫的時候, 需要在類⽅方法上⾯面添 加@classmethod
三. 類的成員-屬性
屬性其實就是通過方法改造過來的⼀一種變數量的寫法, 在⽅方法上新增⼀一個@property就可以 了
class Person:
def __init__(self):
pass
@property
def age(self):
return 1
p = Person()
age = p.age
print(age)
應⽤用場景: 我們⼀一般儲存資料的時候, 不會儲存⼀一個⼈人的年年齡. 因為隨著時間的推移. 每個 ⼈人的年年齡都時刻在改變著. 那如何儲存更更加完美呢? 很簡單. 儲存出⽣生年年⽉月⽇日. 然後⽤用程式來 計算,你當前的年年齡. 實時的. 那這個時候就需要進⾏行行相應的計算了了. ⽽而計算屬於⼀一個功能. 當 然要寫⽅方法⾥裡里了了. 但是對於年年齡這個屬性⽽而⾔言. 他應該是⼀一個數值. ⽽而不是動作. 所以python 就提供了了這樣⼀一種機制. 通過⽅方法來描述⼀一個屬性.
注意: 1. 方法引數只能有⼀一個self
2. 方法上⽅方要寫@property
3. 呼叫的時候, 我們不需要寫括號. 直接當成屬性變數來⽤用就可以了了.
4. 這種套路路只能取值. 不能設定值
四. 私有
在python中, ⼀一般是不提倡設定和使⽤用私有資訊的. 但有些場景, 我們不得不這麼做. 比如, 在⼀一個公司. 每個⼈人的收入情況, 這種內容是絕對不能公開的. 還有, 你的老婆, 也是⼀一個私有 的. 只能你⼀一個⼈人使⽤用. 別⼈人不能碰. 碰了了就炸鍋了了.
在python中使⽤用__作為⽅方法或者變數量的字首. 那麼這個⽅方法或者變數量就是⼀一個私有的.
1. 私有變量2. 私有方法
需要注意的是, 對於私有的內容⽽言. 子類是無法繼承的.