
一、私有屬性與私有方法
Python中,是沒有真正意義上的私有的
- 私有屬性與私有方法是對象的隱私,通常用于做一些內(nèi)部的事情,外界與子類都不能直接訪問
| 名稱 | 描述 |
|---|---|
| 私有屬性 | 對象不希望公開的屬性 |
| 私有方法 | 對象不希望公開的方法 |
- 定義方式
定義屬性名或方法名時,在屬性名或方法名的前面加兩個下劃線,這樣定義的就是私有屬性或私有方法
提示:
- 子類對象不能再自己的方法內(nèi)部,直接訪問父類的私有屬性或私有方法,但是可以通過父類的公有方法進(jìn)行間接訪問
eg:
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
self.age = 18
def __secret(self):
# 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
print("%s的年齡是%d" % (self.name, self.__age))
def secret(self):
# 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
print("%s的年齡是%d" % (self.name, self.__age))
if __name__ == '__main__':
xiaomei = Women('小美')
print(xiaomei.age)
xiaomei.secret()
# # 私有屬性不能直接被外界訪問
# print(xiaomei.__age)
# # 私有方法不能直接被外界調(diào)用
# xiaomei.__secret()
二、偽私有屬性與偽私有方法
Python中,是沒有真正意義上的私有的,只是在給屬性、方法命名時,對名稱做了一些特殊處理,使外界無法訪問到
- 處理方式:
_類名__名稱
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
self.age = 18
def __secret(self):
# 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
print("%s的年齡是%d" % (self.name, self.__age))
def secret(self):
# 在對象的方法內(nèi)部是可以訪問對象的私有屬性的
print("%s的年齡是%d" % (self.name, self.__age))
if __name__ == '__main__':
xiaomei = Women('小美')
print(xiaomei.age)
xiaomei.secret()
# 私有屬性不能直接被外界訪問
print(xiaomei._Women__age)
# 私有方法不能直接被外界調(diào)用
xiaomei._Women__secret()
更新中......