Python 名稱修飾 隱藏函式 隱藏屬性

2022-06-26 02:15:10 字數 1487 閱讀 1813

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...