python隱藏類中的屬性


方法一:

  效果圖一:

  代碼一:

# 定義一個矩形的類
class Rectangle:
    # 定義初始化方法
    def __init__(self,width,height):
        self.hidden_width = width
        self.hidden_height = height

    # 定義獲取width、height的方法
    def get_width(self):
        return self.hidden_width

    def get_height(self):
        return self.hidden_height

    # 定義修改width、height的方法
    def set_width(self,width):
        self.hidden_width = width

    def set_height(self,height):
        self.hidden_height = height

    # 定義一個獲取矩形面積的方法
    def get_area(self):
        return self.hidden_width * self.hidden_height

# 創建Rectangle的實例
r_one = Rectangle(3,4)
# 輸出打印 r_one的widh
print(r_one.get_width())   # 輸出 3
# 輸出打印 r_one的area
print(r_one.get_area())    # 輸出 12

# 改變width
r_one.set_width(5)
print(r_one.get_area())     # 輸出 20

方法二:

  效果圖二:

  代碼二:

# 可以為對象的屬性使用雙下划線開頭,__xxx
# 雙下划線開頭的屬性,是對象的隱藏屬性,隱藏屬性只能在類的內部訪問,無法通過對象訪問
# 其實隱藏屬性只不過是Python自動為屬性改了一個名字
#   實際上是將名字修改為了,_類名__屬性名 比如 __name -> _Person__name
class Person:
    def __init__(self,name):
        self.__name = name

    def get_name(self):
        return self.__name

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

p = Person('孫悟空')

# print(p.__name) # 報錯:AttributeError: 'Person' object has no attribute '__name'
                  #__開頭的屬性是隱藏屬性,無法通過對象訪問
p.__name = '豬八戒' # 這個設置無效,不會報錯
print(p._Person__name)
p._Person__name = '沙和尚'

print(p.get_name())

方法三: 常用的

  效果圖三:

 

  代碼三:

# 使用__開頭的屬性,實際上依然可以在外部訪問,所以這種方式一般不用
#   一般會將一些私有屬性(不希望被外部訪問的屬性)以_開頭
#   一般情況下,使用_開頭的屬性都是私有屬性,沒有特殊需要不要修改私有屬性
class Person:
    def __init__(self,name):
        self._name = name

    def get_name(self):
        return self._name

    def set_name(self,name):
        self._name = name

p = Person('牛一')

print(p._name)

 


免責聲明!

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



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