python的實例類方法、修飾器類方法、修飾器保護方法、修飾器靜態方法中私有屬性的區別和自定義property的讀寫方法

class Cla:
    __count=0
    def __init__(self,v):
        self.__value=v
        Cla.__count+=1
    def show(self):
        print('普通實例方法訪問私有屬性:',self.__value,Cla.__count)
    @classmethod        
    def classShow(cls):
        print('修飾器類方法訪問私有屬性:',cls.__count)
    @property
    def value(self):
        print('修飾器保護方法:',self.__value)
    @staticmethod
    def staticShow():
        print('修飾器靜態方法訪問私有屬性:',Cla.__count)
cla=Cla(5)
cla.show()
cla.classShow()
cla.staticShow()
print()
cla2=Cla(10)
cla2.show()
cla2.classShow()
cla2.staticShow()
print()
Cla.show(cla)
Cla.classShow()
Cla.staticShow()
print()
cla.value
#cla.value=99
#del cla.value

在這裏插入圖片描述
第三段是通過類名調用類方法。
可以發現,實例cla和實例cla2調用類構造方法的私有屬性__value相互獨立,類私有屬性__count實例共用。
修飾器類方法參數cls與類名相同。

cla.value=99

在這裏插入圖片描述

del cla.value

在這裏插入圖片描述
增加兩行代碼測試後,發現修飾器保護方法可讀不可寫,也不可刪除。
如下修改可自定義property的讀寫方法:

class Cla:
    def __init__(self,v):
        self.__value=v
    def __getValue(self):
        print(self.__value)
    def __setValue(self,v):
        self.__value=v
    def __delValue(self):
        del self.__value
    value=property(__getValue,__setValue,__delValue)
cla=Cla(5)
cla.value
cla.value=10
cla.value
#del cla.value
#cla.value

在這裏插入圖片描述
增加測試刪除代碼

del cla.value
cla.value

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章