類中的屬性和方法
我們先來定義一個類:
類屬性
class A(object):
count = 0
print(A.count)
執行結果:
修改代碼:
# a.count = 10
A.count = 100
print('A ,',A.count)
print('a ,',a.count)

此時
count = 0
是類屬性,直接在類中定義的屬性是類屬性,類屬性可以通過類或類的執行個體通路到,但是類屬性隻能通過類對象
A.count = 100
來修改,無法通過執行個體對象
a.count = 10
修改。
執行個體屬性
a.count = 10
是執行個體屬性,通過執行個體對象添加的屬性屬于執行個體屬性。
def __init__(self):
self.name = '孫悟空'
print('a ,',a.name)
print('A ,',A.name)
self.name = '孫悟空'
是執行個體屬性,通過執行個體對象添加的屬性屬于執行個體屬性。執行個體屬性隻能通過執行個體對象來通路和修改,類對象無法通路修改。
執行個體方法
def test(self):
print('這是test方法~~~ ', self)
a = A()
a.test()
在類中定義,以self為第一個參數的方法都是執行個體方法。執行個體方法在調用時,Python會将調用對象作為self傳入。
執行個體方法可以通過執行個體和類去調用
- 當通過執行個體調用時,會自動将目前調用對象作為self傳入
- 當通過類調用時,不會自動傳遞self,此時我們必須手動傳遞self
# A.test()
A.test(a)
a.test()
等價于
A.test(a)
。
類方法
在類内部使用 @classmethod 來修飾的方法屬于類方法
@classmethod
def test_2(cls):
print('這是test_2方法,他是一個類方法~~~ ',cls)
a = A()
A.test_2()
類方法的第一個參數是cls,也會被自動傳遞,cls就是目前的類對象。
類方法和執行個體方法的差別,執行個體方法的第一個參數是self,而類方法的第一個參數是cls。
print(cls.count)
類方法可以通過類去調用,也可以通過執行個體調用,沒有差別。
a.test_2()
A.test_2()
a.test_2()
靜态方法
在類中使用 @staticmethod 來修飾的方法屬于靜态方法 。
@staticmethod
def test_3():
print('test_3執行了~~~')
a = A()
A.test_3()
a.test_3()
靜态方法不需要指定任何的預設參數,靜态方法可以通過類和執行個體去調用 。
靜态方法,基本上是一個和目前類無關的方法,它隻是一個儲存到目前類中的函數。靜态方法一般都是一些工具方法,和目前類無關。
配套視訊課程,點選這裡檢視
擷取更多資源請訂閱
Python學習站