您的“關注”和“點贊”,是信任,是認可,是支持,是動力…
如意見相佐,可留言。
本人必將竭盡全力試圖做到準確和全面,終其一生進行修改補充更新。
文章目錄
1 Python 類的定義
在 Python 中定義類需要實用class
關鍵字,格式如下所示:
class 類名:
類屬性...
類方法...
對以上格式說明,
class
:此關鍵字是必需的。- 類名:類名本質上就是一個標識符,因此,在給類起名字時,必須讓其符合 Python 標識符命名規則。還要考慮可讀性問題,類名最好能體現出該類的功能。如果類名由多個字母或單詞組成,每個單詞的首字母大寫,其它字母小寫。
:
:類名後的冒號是必需的。告訴 Python 解釋器,要開始編寫類屬性和類方法了。- 類屬性和類方法:都不是必需的,可有可無。請參見《Python 類中的變量(或屬性)分類以及特點詳解》。
- Python 類中的屬性和方法所在的位置是任意的,它們之間並沒有固定的前後次序。
- 同屬一個類的所有類屬性和類方法,要保持統一的縮進格式。
舉例如下所示:
例一,
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義類方法
def say(self):
print('Person 類中的 say() 方法。')
例二,
# 定義空類,沒有實際意義
class Demo:
pass
例一中定義了一個 Person
類,類中有一個實例方法 say(self)
,其中還有個self
參數。
對於實例方法,請參見博文《Python 類中的方法分類以及特點詳解》。
對於 self
參數,請參見博文《Python self 參數詳解》。
2 Python 創建類的對象和使用
2.1 Python 類對象的創建
創建類對象的過程,又稱爲類的實例化。
類的實例化,其語法格式如下所示:
類名(參數)
舉例如下所示:
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義實例方法
def say(self):
print('Person 類中的 say() 方法。')
person = Person() # 類的實例化:創建類的對象
2.2 Python 類對象的使用
(1)類對象訪問變量或方法
類對象訪問類中實例變量的語法格式如下所示:
類對象名.變量名
類對象調用類中方法的語法格式如下所示:
對象名.方法名(參數)
舉例如下所示:
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義實例方法
def say(self):
print('Person 類中的 say() 方法。')
person = Person() # 類的實例化:創建類的對象
# 輸出 name、age 實例變量的值到控制檯
print(person.name)
print(person.age)
# 修改實例變量的值
person.name = '阿杰'
person.age = 28
print('修改後實例變量的值:', person.name, person.age)
# 調用實例方法
person.say()
運行結果:
碼農阿杰
18
修改後實例變量的值: 阿杰 28
Person 類中的 say() 方法。
(2)給類對象動態添加、刪除變量
舉例如下所示:
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義實例方法
def say(self):
print('Person 類中的 say() 方法。')
person = Person() # 類的實例化:創建類的對象
# 爲類對象動態添加兩個實例變量 gender、num
person.gender = '男'
person.num = 1314
# 打印爲類對象動態添加的兩個實例變量 gender、num 的值
print(person.gender)
print(person.num)
# 使用 del 語句動態刪除類對象的實例變量
del person.gender
# 打印進行測試,是否刪除成功。如果刪除成功,會報錯。
print(person.gender)
運行結果:
男
1314
Traceback (most recent call last):
File "D:/Data/ProfessionalSkills/Python/PycharmProjects/demo/demo.py", line 26, in <module>
print(person.gender)
AttributeError: 'Person' object has no attribute 'gender'
(3)給類對象動態添加方法
注意:爲對象動態增加的方法,Python 不會自動將調用者自動綁定到所添加方法的第一個參數(通常爲 self
),需要手動綁定。
對於 self
參數,請參見博文《Python self 參數詳解》。
舉例如下所示:
例一,
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義實例方法
def say(self):
print('Person 類中的 say() 方法。')
person = Person() # 類的實例化:創建類的對象
# 先準備一個方法
def add(self):
print('add() 函數。')
# 爲 person 對象動態添加 info 方法。把事先準備好的 add(self) 方法賦值給 info。
person.info = add # 動態綁定方法。也可以使用 lambda 表達式來寫,因爲事先準備的 add(self) 方法只有一行代碼
person.info(person) # 手動將調用者綁定到所添加方法的第一個參數
運行結果:
add() 函數。
例二,還可以藉助 types 模塊下的 MethodType 來實現
# 定義類
class Person:
# 定義類屬性
name = '碼農阿杰'
age = 18
# 定義實例方法
def say(self):
print('Person 類中的 say() 方法。')
person = Person() # 類的實例化:創建類的對象
# 先準備一個方法
def add(self):
print('add() 函數。')
# 爲 person 對象動態添加 info 方法。把事先準備好的 add(self) 方法賦值給 info。
# person.info = add # 動態綁定方法
# person.info(person) # 手動將調用者綁定到所添加方法的第一個參數
# 使用 types 模塊下的 MethodType 實現動態綁定方法和手動將調用者綁定到所添加方法的第一個參數
from types import MethodType
person.info = MethodType(add, person) # 已經將該函數的 self 參數綁定爲 person
person.info() # 調用添加的方法
運行結果:
add() 函數。