函數是沒有父子關系的,所以無法獲取父函數名。
創新互聯建站云計算的互聯網服務提供商,擁有超過13年的服務器租用、四川聯通機房服務器托管、云服務器、虛擬空間、網站系統開發經驗,已先后獲得國家工業和信息化部頒發的互聯網數據中心業務許可證。專業提供云主機、虛擬空間、國際域名空間、VPS主機、云服務器、香港云服務器、免備案服務器等。
對象具有父子關系,但是方法名稱和父類的方法名稱必然是同名的。
另一種可能是你想問誰調用的當前函數,可以打印堆棧信息。print_r(debug_backtrace());
classstdata(Structure):_fields_=[('pBuf',c_char_p),('buflen',c_int)]N=100buf=create_string_buffer(N)d=stdata()d.buflen=Nd.pBuf=cast(buf,c_char_p)n=CallMyCFunc_GetData(byref(d))關鍵在于create_string_buffer創建可寫buffer;cast轉換為char*類型。
某個時候你覺得Parent名字不好了,改成MyParent,結果不得不把每個子類都改一遍
另外給一個類獲得父類只能用super,比如:
def get_super(cls):
你好,請看下面的例子和說明:python中類的初始化方法是__init__(),因此父類子類的初始化方法都是這個,如果子類不實現這個函數,初始化時調用父類的初始化函數,如果子類實現這個函數,就覆蓋了父類的這個函數,既然繼承父類,就要在這個函數里顯式調用一下父類的__init__(),這跟C++,jAVA不一樣,他們是自動調用父類初始化函數的。調用父類函數有以下方法:class A:def method(self, arg):pass class B(A):def method(self, arg):# A.method(self,arg) # 1# super(B, self).method(arg) #2super().method(arg) #31.直接寫類名調用2.用super(type,obj).method(arg)方法調用。3.在類定義中調用本類的父類方法,可以直接super().method(arg).在代碼中調用對象的父類的方法的示例:ob = B()super(B,ob).method(arg) #調用class B的父類class A的method。初始化中調用父類初始化方法示例:class B(A):
我的是python3;
這里有兩個問題:
1、你繼承的時候,為何跟父類的函數名都是“method”,除非的你想改寫父類的這個函數“method”,若不是,就不要用同樣的函數名;我這里把函數名改成了“method2”;
2、調用父類的方法時,不要這樣“father.method(self)”,而應該是這樣“self.method()”;
In[77]: class son(father):
def method2(self):
print ('starting son.method')
self.method()
print('ending son.method')
In[78]: s_ = son() # 實例化類'son'
In[79]: s_.method2() # 調用子類的方法“method2”
starting son.method
in father.method
ending son.method
In[80]: s_.method() # 調用父類的方法“method”
in father.method
分享標題:python獲取父函數名,python調用父類函數
文章分享:http://vcdvsql.cn/article24/hsjjce.html
成都網站建設公司_創新互聯,為您提供域名注冊、網站設計、網站收錄、靜態網站、云服務器、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯