Python類

我們將在本節中討論Python物件導向程式設計(OOP)的基礎知識,比如類、物件等。

Python是一種物件導向的程式設計,換句話說,Python中的所有的東西都是一個物件。

物件導向程式設計介紹

物件導向程式設計(OOP)的基礎包括以下術語,以後我們會經常在學習和使用中提到

  1. 資料成員
  2. 方法
  3. 物件
  4. 建構函式
  5. 方法過載
  6. 運算子過載
  7. 繼承
  8. 類例項和例項化

Python類和物件

類可以被認為是物件的輪廓,而物件是資料成員和成員函式的集合。類包含可以使用該類的物件來訪問的資料成員(變數)和成員函式(方法)。

新建一個類

可以使用 class 關鍵字以及後面加類的名字來新建一個類。語法如下,

class NameofClass:
    #data members of the class
    #member functions of the class

舉例如下,

>>> class Waiter:
	name = "Andrew"
	def display():
		print('Waiter Class')	
>>> print(Waiter.display)
<function Waiter.display at 0x0359E270>
>>> print(Waiter.name)
Andrew

在上例中,新建了一個名叫 Waiter 的類,它包含了一個成員變數 name 以及一個成員方法 display()

新建一個類的物件例項

你可以通過下面的語句來新建一個類的物件示例,

obj = className()

舉個例子,

>>> w = Waiter()
>>> print(w.name)
Andrew
>>> w.display()
Waiter Class

你可以看到, Waiter 類的物件例項可以通過點運算子.來訪問類的成員(屬性) 。

類屬性

除了資料成員和成員函式之外,類還有一些Python的內建屬性。

  1. __dict__:包含類的名稱空間 的字典。
  2. __doc__:類的文件說明
  3. __name__:類的名稱
  4. __module__: 定義類的所在模組
  5. __bases__: 包含基礎類的元組

這些屬性可以通過.來訪問。

舉例說明一下,

>>> class Waiter:
	"This is a waiter class"
	name="Andrew"
	def display():
		print("You are in waiter class")
>>> w = Waiter()

>>> print(w.__doc__)
This is a waiter class

>>> print(w.__dict__)
{}

>>> print(w.__module__)
__main__

Python類構造方法

Python類可以通過 __init__()方法來進行構造,這個內建的方法是當對應類的物件被新建時被自動呼叫的特殊方法。構造方法基本上是用來初始化類的成員資料。

>>> class Waiter:
        def __init__(self, n):
            self.name=n
            self.age=20
        def display(self):
            print(self.name)

>>> w=Waiter('Rob')
>>> w.display()
Rob

上例中, self 引數會在構造方法定義以及其他類方法中使用。你可以這樣來看待,當你呼叫 w.display()方法時,它會被解釋為 Waiter.display(w)

刪除類的屬性

你可以通過 del 來刪除類物件例項中的屬性。

>>> w=Waiter('Rob')
>>> w.__dict__
{'name': 'Rob', 'age': 20}
>>> del w.age
>>> w.__dict__
{'name': 'Rob'}