[英]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.