1.成員
在類中你能寫的所有內容都是類的成員
2.變數
1. 例項變數:昨天寫的就是實力變數,由物件去訪問的變數
2. 類變數: 這個變數屬於類.但是物件也可以訪問
例項變數
class Person:
def __init__(self, name, id, gender, birth):
self.name = name # 例項變數 物件裡的變數
self.id = id
self.gender = gender
self.birth = birth
p = Person(“wusir”, “10086”, “不詳”, “1900-12-15”)
print(p.birth)
p.birth = “1840-5-6”
print(p.birth)
# 例項變數一般使用 物件.屬性
print(p.name)
類變數
class Person:
country = “大清”
def __init__(self, name, gender):
self.name = name
self.gender = gender
p = Person(“武sir”, “未知”)
p2 = Person(“太白”, “兩性”)
Person.country = “中國” # 類變數最好是使用類名來訪問
# p.country = “大清” # 大坑::沒有修改類變數
# p2.country = “大明”
print(p.country) # 類變數可以給物件使用
print(p2.country) # 類變數可以給物件使用
3.方法
1.例項方法:昨天寫的就是例項方法. 使用 物件.方法()
特點: 在宣告的時候. 需要給出self,self必須放在第一格位置 .
在呼叫的時候. 自動的會把物件那個傳遞給形參的self
2.類方法(@classmethod): 類方法是屬於類的.
特點: 在宣告的時候需要給出一個能夠接受類名的引數, cls, 也必須放在引數的第一個
在呼叫的時候. 自動的把xx物件的類傳遞給cls
3. 靜態方法(@staticmethod): 靜態方法也是屬於類的. 靜態方法就好比,我們在類中定義了一個函式
靜態方法一般和類方法差不多. 使用類名去訪問
例項方法
class Computer:
# 例項方法
def play(self):
print(“電腦可以掃雷”)
# 在定義例項方法的時候. 必須給出一個引數 self
# 形參的第一個引數, 自動的把物件給傳遞進來
def work(self): # self 是當前類的物件
print(self)
print(“電腦用來工作”)
c = Computer()
c.work() # 呼叫的時候不需要手動給出self
print(c)
類方法
class Person:
# 例項方法
def chi(self):
print(“人會吃”)
@classmethod # 裝飾器, 此時這個方法是一個類方法
def he(cls): # 此時接收到的cls是類名
# print(cls)
print(“人會喝”)
# 用物件訪問
# p = Person()
# p.he() # 在呼叫類方法的時候. 預設的把類名傳遞給類方法
# print(Person)
# 類方法一般用類名去訪問
Person.he() # 類方法
靜態方法
class Person:
@staticmethod # 靜態方法
def yue():
print(“fsadf”)
# 靜態方法可以使用物件訪問. 也可以使用類名訪問. 但是一般推薦使用類名訪問
p = Person()
p.yue()
# 推薦使用類名訪問
Person.yue()
4.屬性
在方法上新增一個@property. 可以吧一個方法變成一個屬性.單數這個屬性不可以被賦值
當我們某一個屬性必須經過計算才能得到結果的時候使用
class Person:
def __init__(self, name, gender, birth):
self.name = name
self.gender = gender
self.birth = birth # 2000 2018
# 年齡 -> 應該是算出來的. 而不是直接儲存
@property # 把一個方法更改成一個屬性, 每次拿屬性的時候都會自動的去執行這個方法
# 方法的返回值就是屬性值
def age(self): # 例項方法
print(“我是方法”)
return 2018 – self.birth
p1 = Person(“武sir”, “未知”, 2000)
print(p1.age) # 看著像一個變數一樣使用, 實際上這裡是呼叫的一個方法
print(p1.age)
# p1.age = 26 # 不可以的, 因為age是一個方法. 不是一個變數
5.私有
所有以雙下劃綫開頭的放馬,變數都是私有內容. 外界無法訪問. 除非你主動暴露這些內容
class Person:
__qie = “潘潘” # 類變數
def __init__(self, name, mimi):
self.name = name
self.__mimi = mimi # 私有內容 例項變數
def gaosu(self):
print(f”把祕密告訴了太白, 第二天所有人都知道了{self.__mimi}”)
print(Person.__qie) # 私有的類變數只能在類中呼叫
# return self.__mimi
def __yue(self): # 私有的例項方法
print(“我要和寶寶約”)
@staticmethod
def __koujiao():
print(“韓志遠希望和嫂子一起摳腳”)
@classmethod
def __fangqi(cls):
print(“和嫂子一起放氣”)
p = Person(“wusir”, “和嫂子的故事”)
# print(p.__mimi) # 私有的內容只能在類裡面呼叫
p.gaosu()
print(Person.__qie)
p = Person(“wusir”, “嫂子的故事”)
p.__yue()
Person.__koujiao()