
????
一、應(yīng)用場景及定義方式
應(yīng)用場景
- 在實際開發(fā)中,對象 的 某些屬性或方法 可能只希望 在對象的內(nèi)部被使用,而 不希望在外部被訪問到
- 私有屬性 就是 對象 不希望公開的 屬性
- 私有方法 就是 對象 不希望公開的 方法
定義方式
- 在 定義屬性或方法時,在 屬性名或者方法名前 增加 兩個下劃線,定義的就是 私有 屬性或方法
# 私有屬性和私有方法
class Cat:
def __init__(self,name):
self.name = name
self.__age = 18
def __eat(self):
print("%d的%s吃撐了"%(self.__age,self.name))
cat = Cat("小花")
# 私有屬性,外部不能直接訪問
# print(cat.__age)
# 私有方法,外部不能直接調(diào)用
#AttributeError: 'Cat' object has no attribute 'eat'
# cat.__eat()
二、偽私有屬性和私有方法(科普)
提示:在日常開發(fā)中,不要使用這種方式,訪問對象的 私有屬性 或 私有方法
Python 中,并沒有 真正意義 的 私有
- 在給 屬性、方法 命名時,實際是對 名稱 做了一些特殊處理,使得外界無法訪問到
-
處理方式:在 名稱 前面加上
_類名=>_類名__名稱
print(cat._Cat__age)
cat._Cat__eat()
打印結(jié)果:
18
18的小花吃撐了