python面向物件-類和物件
阿新 • • 發佈:2020-12-26
一. 類的定義
class 類名(): 程式碼
# 定義類 class Washer(): def wash(self): print("洗衣服")
注意:類名要滿足識別符號命名規則,同時遵循大駝峰命名習慣。
二. 建立物件
物件名 = 類名()
# 建立物件 w = Washer() # 呼叫方法 w.wash() # 洗衣服
三. self
self指的是呼叫該函式的物件。相當於java中的this
四. 給物件新增屬性
1.在類外面新增屬性
物件名.屬性名 = 值
# 建立物件 w = Washer() # 新增和設定屬性w.width = 100 w.heigth = 500 # 獲取屬性的值 print(w.heigth) # 500 print(w.width) # 100
在類外面設定的屬性可在類方法上通過self獲取到:
# 定義類 class Washer(): def wash(self): print(self.height) # 500 # 建立物件 w = Washer() # 新增和設定屬性 w.width = 100 w.height = 500 # 獲取屬性的值 print(w.height) # 500 print(w.width) # 100w.wash()
五. 魔法方法
在Python中,`__xx__()`的函式(雙下劃線開頭和結尾的函式)叫做魔法方法,指的是具有特殊功能的函式。
1.__init__() 初始化方法
1.1__init__() 方法的作用
__init__()方法,在建立一個物件時預設被呼叫,不需要手動呼叫。`__init__(self)`中的self引數,不需要開發者傳遞,python直譯器會自動把當前的物件引用傳遞過去。
# 定義類 class Washer(): def __init__(self): self.width = 100 self.height= 500 # 建立物件 w = Washer() # 獲取屬性的值 print(w.height) # 500 print(w.width) # 100
1.2 帶引數的`__init__()`
`__init__()`可以傳遞引數,在建立物件時候傳入,如`__init__(self, width, height)`
# 定義類 class Washer(): def __init__(self, width, height): self.width = width self.height = height # 建立物件 w = Washer(100, 500) # 獲取屬性的值 print(w.height) # 500 print(w.width) # 100
說明
1.w = Washer(100, 500)中的100 和500 分別對應__init__(self, width, height) 中的width 和height, 建立Washer物件時,自動呼叫__init__()並將這兩個值傳入完成物件初始化
2. 第一個引數預設為self,由直譯器自動傳入,建立物件時不傳
3. 通過self在類中可以定義需要的屬性, 如self.width = width 即是定義了一個width屬性
2 __str__() 方法
當使用print輸出物件的時候,預設列印物件的記憶體地址。如果類定義了`__str__`方法,那麼就會列印從在這個方法中 return 的資料。
# 定義類 class Washer(): def __init__(self, width, height): self.width = width self.height = height def __str__(self): return f"這是一臺洗衣機。。。長{self.height}, 寬{self.width}" # 建立物件 w = Washer(100, 500) print(w) # 這是一臺洗衣機。。。長500, 寬100
3 __del__()方法的作用
當刪除物件時,python直譯器會預設呼叫`__del__()`方法。
# 定義類 class Washer(): def __init__(self, width, height): self.width = width self.height = height def __del__(self): print("這臺洗衣機要被刪除了") #刪除物件時執行 # 建立物件 w = Washer(100, 500) # 刪除物件 del w # 這臺洗衣機要被刪除了