1、類屬性
Python中,屬性可以分為實例屬性和類屬性。
類屬性就是 類對象中定義的屬性,它被該類的所有實例對象所共有。通常用來記錄 與這類相關 的特征,類屬性 不會用于記錄 具體對象的特征。
在Python中,一切皆對象。類也是一個特殊的對象,我們可以單獨為類定義屬性。
class Person(object):
? ? # 定義類屬性
? ? count = 0
? ? def __init(self, name, age):
? ? ? ? self.name = name
? ? ? ? self.age = age
? ? ? ??
p1 = Person('Tom', 23)
p2 = Person('Harry', 26)
2、類屬性代碼實現
定義count類屬性,用于記錄實例化Person類,產生對象的數量。
class Person(object):
? ? # 定義類屬性count
? ? count = 0
? ? # 定義一個__init__魔術方法,用于進行初始化操作
? ? def __init__(self, name):
? ? ? ? self.name = name
? ? ? ? # 對count類屬性進行+1操作,用于記錄這個Person類一共生成了多少個對象
? ? ? ? Person.count += 1
# 1、實例化對象p1
p1 = Person('Tom')
p2 = Person('Harry')
p3 = Person('Jennifer')
# 2、在類外部輸出類屬性
print(f'我們共使用Person類生成了{Person.count}個實例對象')
3、類方法
為什么需要類方法,在面向對象中,特別強調數據封裝性。所以不建議直接在類的外部對屬性進行直接設置和獲取。所以我們如果想操作類屬性,建議使用類方法。
class Tool(object):
? ? # 定義一個類屬性count
? ? count = 0
? ? # 定義一個__init__初始化方法
? ? def __init__(self, name):
? ? ? ? self.name = name
? ? ? ? Tool.count += 1
? ? # 封裝一個類方法:專門實現對Tool.count類屬性進行操作
? ? @classmethod
? ? def get_count(cls):
? ? ? ? print(f'我們使用Tool類共實例化了{cls.count}個工具')
? ? ? ??
t1 = Tool('斧頭')
t2 = Tool('榔頭')
t3 = Tool('鐵鍬')
Tool.get_count()
類方法主要用于操作類屬性或類中的其他方法。
4、靜態方法
在開發時,如果需要在類中封裝一個方法,這個方法:
① 既 不需要訪問實例屬性或者調用實例方法
② 也 不需要訪問類屬性或者調用類方法
這個時候,可以把這個方法封裝成一個靜態方法
# 開發一款游戲
class Game(object):
? ? # 開始游戲,打印游戲功能菜單
? ? @staticmethod
? ? def menu():
? ? ? ? print('1、開始游戲')
? ? ? ? print('2、游戲暫停')
? ? ? ? print('3、退出游戲')
# 開始游戲、打印菜單
Game.menu()
?