[英]How to access parent class instance method from child class static method in python?
class P(object):
def __init__(self):
print('Parent')
@staticmethod
def M1():
print('parent Static')
@classmethod
def M2(cls):
print('parent class method')
def M3(self):
print('Instance Method')
class Q(P):
@staticmethod
def W1():
super(Q,Q).M3()##Here I am getting error
Q.W1()
TypeError:必須以Q實例作為第一個參數調用未綁定方法M3()(而是什么也不做)
P.M3
不是靜態的也不是類方法。
注意方法簽名中的self
:
def M3(self):
如果沒有P對象的實例,則無法從W1調用它。
您正在嘗試執行的操作類似於P.M3()
,但這將不起作用。
從Q staticmethod
,您可以在基類中調用其他靜態/類方法,但是,要調用實例方法則需要instance
。 Q中的靜態方法不提供實例,因此它將無法在基類中調用實例方法。
您可以使用多種方法來調用M3,但它們將取決於您的實際需求。 例如:
class Q(P):
@staticmethod
def W1():
p = P()
p.M3()
@staticmethod
def W2(p):
p.M3()
Q.W1()
some_p = P()
Q.W2(some_p)
some_q = Q()
Q.W2(some_q)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.