Python 私有屬性和私有方法


類的私有屬性和方法

Python是個開放的語言,默認情況下所有的屬性和方法都是公開的 或者叫公有方法,不像C++和 Java中有明確的public,private 關鍵字來區分私有公有。

Python默認的成員函數和成員變量都是公開的,類的私有屬性指只有在類的內部使用的屬性或方法,表現形式為以“__“ 屬性名或方法名以雙下划線開頭。

class Test(object):
    __count = 0   # 私有屬性 __count

    def get_count(self):
        return self.__count   # 類的內部可以使用私有屬性

    def set_count(self, value):
        if self.__check_value(value):   # 在類的內部調用類的私有方法
            self.__class__.__count = value

    def __check_value(self, value):   # 定義類的私有方法 檢查參數
        if isinstance(value, int):
            return True


a = Test()
print(a.get_count())
a.set_count(100)
print(a.get_count())
#a.__check_value(10)    # 調用私有方法會報錯
#print(a.__count)			# 直接訪問私有屬性也會報錯

應用場景

對於一些敏感的數據,我們不希望直接被的函數調用,或者不希望草率的直接 object.key = value 來修改,我們可以選擇將屬性聲名為私有的,這樣從外部時無法訪問該屬性的,也就不能修改了,但是依然可以修改屬性字典的方法來修改。

# 當然 可以使用 @proprety 
class Person(object):
    __name = 'Monkey'

    def update_name(self, name):
        self.__name = name

    def get_name(self):
        return self.__name


p = Person()
p.update_name('BlackMonkey')
print(p.get_name())   # BlackMonkey
print(p.__name)   # 報錯 AttributeError: 'Person' object has no attribute '__name'


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM