python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對物件語言有區別。關於私有屬性和私有方法,有如下要點:
class demo:
__price = 25.8
def __init__(self, u_name, u_age):
self.uname = u_name
self.__uage = u_age
def __age(self):
print("這是私有方法")
print("呼叫共有屬性:", self.uname)
print("呼叫私有屬性:", self.__uage)
print("呼叫私有類屬性:", self.__price)
def name(self):
print("這是公有方法")
print("呼叫共有屬性:", self.uname)
print("呼叫私有屬性:", self.__uage)
print("呼叫私有類屬性:", self.__price)
在 python 中任何東西都是物件,一種資料型別,乙個模組等,都有子集的屬性和方法,除了常用的方法外,其他的你不需要全部記住它,交給 dir() 函式就好了。
d = demo('tom', 18)
print(dir(d))
"""['_demo__age', '_demo__price', '_demo__uage', '__class__', '__delattr__', '__dict__',
'__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', '__weakref__', 'name', 'uname']
"""
這些列印出來的屬性(方法)是可以直接呼叫的。從列印的結果可以看到,私有屬性 '__age()'、 '__price'、'__uage' 這三個私有屬性(方法)都變成了 '_demo__age', '_demo__price', '_demo__uage',也就可以看出,私有屬性(方法)在python中是不允許直接去呼叫的,類外部可以通過 」_類名__私有屬性(方法)名「 訪問私有屬性(方法)
# 呼叫共有方法
d.name
"""這是公有方法
呼叫共有屬性: tom
呼叫私有屬性: 18
呼叫私有類屬性: 25.8
"""# 呼叫私有方法(錯誤示範)
d.__age()
"""traceback (most recent call last):
file "d:/local/pycharmprojects/private_obj/demo.py", line 32, in d.__age()
attributeerror: 'demo' object has no attribute '__age'
"""# 呼叫私有方法(正確示例)
d._demo__age()
d._demo__
"""這是私有方法
呼叫共有屬性: tom
呼叫私有屬性: 18
呼叫私有類屬性: 25.8
"""# 呼叫私有屬性
print(demo._demo__price) # 25.8
print(d._demo__uage) # 18
python 私有屬性和視為私有屬性
python模組中的視為私有屬性 總的來說,python中有 幾種特殊的屬性 在python模組中,我們經常會見到 x 其中後面兩種 x 是習慣上的私有變數,我們不應該在外部使用它,而是應該通過呼叫內部函式來使用,但這裡是不應該而不是不能,所以要靠我們自覺遵守這個標準,另外,在自定義模組的時候,也要...
python中私有屬性和私有方法,修改私有屬性的值
self.money 1000000子類繼承了父類 如果父類的屬性私有 將不會被子類繼承 私有屬性和私有方法可以在類的裡面使用 自定義類中 如果乙個屬性進行了私有 在類的外面不能呼叫 物件名.屬性名 資料 直接修改 物件名.方法名 間接修改class person object def init s...
python中的私有屬性
我們先來看前置雙下劃線 以前置雙下劃線定義的屬性和方法,例項物件和子類無法呼叫和訪問。首先看看例項物件對於私有方法的訪問許可權 class grandfather def init self self.name grandpa self.age 80 私有屬性 self.money 1000 私有方...