# ### 如何訪問私有成員class plane():
# 公有屬性
captain = "馬軍強"
# 私有屬性
__air_sister = "20個"
# 公有繫結方法
def fly(self):
print("飛機會飛")
# 公有普通方法
def fly2():
print("飛機會飛2")
# 私有的繫結方法
def __oil_info(self):
print("飛機百公里油耗是100公升")
# 私有的普通方法
def __oil_info2():
print("飛機百公里油耗是100公升")
# 公有的繫結方法
def pub_info(self):
print(self.__air_sister)
self.__oil_info()
# 公有的普通方法
def pub_info2():
print(plane.__air_sister)
plane.__oil_info2()
# (1)如何訪問類的私有成員?
'''利用公有方法呼叫類內的私有成員
私有成員在本類之內可以隨便呼叫,在本類之外不能呼叫
'''# 例項化物件 方法一
obj = plane()
obj.pub_info()
# 也可以使用類來呼叫 方法二
plane.pub_info2()
# (2)如果就想直接在類外呼叫私有成員,有辦法麼?
'''私有成員的改名策略:
_類名 + 私有成員 (沒有真正的私有化,類外可以通過改名策略仍然調取.)
'''print("<===>")
print(obj._plane__air_sister)
plane._plane__oil_info2()
# ### 如何刪除成員
# (1)例項化的物件刪除公有成員屬性和方法
obj = plane()
print(obj.__dict__)
print(obj.captain)
'''captain 成員屬性歸屬於class plane的,不是obj的
obj可以有使用權,沒有所有權(不能夠修改或者刪除類內的屬性)
如果物件有該屬性方法,先優先呼叫該物件裡面的成員,
如果沒有,在呼叫類中的成員屬性和方法
如果都沒有,直接報錯.
'''# 刪除物件的屬性
obj.captain = "熊衛華"
print(obj.__dict__)
print(obj.captain)
del obj.captain
print(obj.captain) # obj自己的captain 被刪除了
# 刪除物件的方法
print("<*****=>")
obj.fly111222 = lambda : print("我的飛機可以潛入海底")
obj.fly111222()
print(obj.__dict__)
# del obj.fly
# print(obj.__dict__)
# (2)定義的類刪除公有成員屬性和方法
'''物件可以呼叫類中得公有成員屬性方法
類不能呼叫物件的相關成員屬性和方法
方向不可逆.
乙個類可以產生多個物件,多個物件彼此之間,資料獨立
'''# 刪除類的成員屬性
# del plane.captain
# print(plane.captain)
# print(obj.captain)
# plane.fly111222() error 類不能呼叫物件的方法
# 刪除類的成員方法
# del plane.pub_info
# plane.pub_info() error 不存在
成員函式訪問物件私有成員
在類的定義過程中,成員函式可以訪問傳遞過來的 同類物件 的所有成員 可以訪問私有成員 可以這樣理解 類是在編譯階段就存在的概念,物件是在執行階段才存在的。c 的私有判斷是在編譯時間決定的,因此c 的私有只能是基於類的,不是基於物件的。封裝是編譯期的概念,是針對型別而非物件的,在類的成員函式中可以訪問...
如何訪問私有成員變數和函式
一說到修改 delphi 原始碼或者訪問物件的私有成員函式,很多人馬上可以說出種種危害來否定我。這種做法我也提倡,但是有時候如果可以靈活運用,可以解決由於 delphi 因為封裝不正確而帶來的問題。我在這裡分享一些技巧 1.訪問私有成員變數 如果是 protected 的變數,可以用如下方法訪問 t...
在類外如何訪問私有成員
1 通過公共函式為私有成員賦值 class test void sety int b void printxy void int main 2 利用指標訪問私有資料成員 class test void sety int b void getxy int px,int py int main 3 利用...