繁体   English   中英

如何从python中的子类静态方法访问父类实例方法?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM