簡體   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