本博問源于python面向對象,在擷取類屬性時,一般我們會直接用類.類屬性去列印,但是python中對象.類屬性也可以.
如果不熟悉類屬性可以檢視這個:
python面向對象什麼時候使用類屬性
第一種情形:類.類屬性
class Tool(object):
count = 0 # count就是一個類屬性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧頭1')
tool2 = Tool('斧頭1')
tool3 = Tool('斧頭1')
tool4 = Tool('斧頭1')
print(Tool.count)
本段代碼淺顯易懂的表明類.類屬性的調用過程,count就是一個類屬性.
第二種情形:對象.類屬性
改動上面一行代碼,就成了下面的代碼。把Tool改為執行個體化,比如tool1
class Tool(object):
count = 0 # count就是一個類屬性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧頭1')
tool2 = Tool('斧頭1')
tool3 = Tool('斧頭1')
tool4 = Tool('斧頭1')
print(tool1.count)
總結
在我們使用過程中,我們要避免使用第二種,因為這種代碼産生混淆。比如下面這段代碼,超短精簡介紹
class Tool(object):
count = 0 # count就是一個類屬性
def __init__(self,name):
self.name = name
Tool.count += 1
tool1 = Tool('斧頭1')
tool2 = Tool('斧頭1')
tool3 = Tool('斧頭1')
tool4 = Tool('斧頭1')
tool1.count = 99
print(tool1.count)
print(Tool.count)
代碼中輸出,兩者print結果不一樣,産生混淆,是以還是用類.類屬性較好