在實際開發中,對象的某些屬性或方法可能只希望在對象的內部被使用,而不希望在外部被訪問到。
- 私有屬性就是對象不希望公開的屬性。
- 私有方法就是對象不希望公開的方法。
在定義屬性或方法時,在屬性名或者方法名前增加兩個下划線,定義的就是私有屬性或方法。
示例:
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
def __secret(self):
# 在對象的方法內部,是可以訪問對象的私有屬性的
print("我的年齡是 %d" % self.__age)
xiaofang = Women("小芳")
# 私有屬性,外部不能直接訪問
print(xiaofang.__age)
# AttributeError: 'Women' object has no attribute '__age'
# 私有方法,外部不能直接調用
# xiaofang.__secret()
在這里科普下 Python 對於對象私有屬性和私有方法的特殊處理。
其實在 Python 中,並沒有真正意義的私有。
在給屬性、方法命名時,實際是對名稱做了一些特殊處理,使得外界無法訪問到。
如果一定要在外部訪問,那么只需要在名稱前面加上 '_類名' 變成 '_類名__名稱'。
# 私有屬性,外部不能直接訪問到
print(xiaofang._Women__age)
# 私有方法,外部不能直接調用
xiaofang._Women__secret()
友情提示:在日常開發中,不要使用這種方式,訪問對象的私有屬性或私有方法。

