python內部會把__字首的屬性重新命名為【_類名+屬性名】;因此在python中如果乙個屬性不是共有的就約定使用雙下劃線__為字首,它不會呼叫任何名稱修飾的演算法,只是說名這個屬性是該類的私有屬性。
class user1:
def __init__(self, name, age, address, course, grade=none):
self.__name = name
self.age = age
self.__address = address
self.__course = course
self.__grade = grade
def __hai(self, msg):
print(msg)
u1 = user1("1", 2, 3, 4)
print("u1.__name:", u1._user1__name) # 隱藏的變數(也叫名稱修飾)被呼叫的時候 呼叫格式 _類名__變數
u1._user1__name = "abc"
print("u1.__name:", u1._user1__name) # 輸出abc
u1._user1__hai("test") # 方法也可以隱藏
u1.age = 3
print(u1.age) # age沒有被隱藏,可以直接呼叫
# 第三個 階段# getter\setter
class user2:
def __init__(self, name, age, address, course, grade=none):
self.__name = name
self.__age = age
self.__address = address
self.__course = course
self.__grade = grade
def set_name(self, name):
if isinstance(name, str): # isinstance 判斷變數是否符合右邊的型別
self.__name = name
else:
self.__name = str(name)
def get_name(self):
return self.__name # 隱藏的變數(名稱修飾)在例項內部可以直接呼叫,用物件不可以呼叫
print("**********=")
u2 = user2("xiaowang", 2, 3, 4)
print(u2.get_name())
u2.set_name("xiaozhang") # 方法沒有被修飾,所以可以直接呼叫
print(u2.get_name())
u2.set_name(123)
print(u2.get_name())
print(type(u2.get_name()))
函式呼叫和名稱修飾
呼叫約定 cdecl fastcall與 stdcall,三者都是呼叫約定 calling convention 它決定以下內容 1 函式引數的壓棧順序,2 由呼叫者還是被呼叫者把引數彈出棧,3 以及產生函式修飾名的方法。1 stdcall呼叫約定 函式的引數自右向左通過棧傳遞,被呼叫的函式在返回前...
函式呼叫約定與函式名稱修飾規則 VC
inte2000 163.com 使用c c 語言開發軟體的程式設計師經常碰到這樣的問題 有時候是程式編譯沒有問題,但是鏈結的時候總是報告函式不存在 經典的lnk 2001錯誤 有時候是程式編譯和鏈結都沒有錯誤,但是只要呼叫庫中的函式就會出現堆疊異常。這些現象通常是出現在c和c 的 混合使用的情況下...
函式呼叫約定與函式名稱修飾規則 舉例
public virtual long stdcall cbasefilter queryvendorinfo wchar t queryvendorinfo cbasefilter uagjpapa w z public thiscall cbasevideorenderer cbasevideo...