天天看點

python兩種方法擷取類屬性

本博問源于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就是一個類屬性.

python兩種方法擷取類屬性

第二種情形:對象.類屬性

改動上面一行代碼,就成了下面的代碼。把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)

           
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')
tool1.count = 99
print(tool1.count)
print(Tool.count)
           

代碼中輸出,兩者print結果不一樣,産生混淆,是以還是用類.類屬性較好

python兩種方法擷取類屬性