1. 程式人生 > 實用技巧 >python面向物件-類和物件

python面向物件-類和物件

一. 類的定義

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)      # 100
w.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    # 這臺洗衣機要被刪除了