天天看點

python類的動态方法是什麼_如何在python 中為類動态建立類方法

參見英文答案 >

Adding a Method to an Existing Object Instance                                    17個

如果我定義一個小python程式

class a():

def _func(self):

return "asdf"

# Not sure what to resplace __init__ with so that a.func will return asdf

def __init__(self, *args, **kwargs):

setattr(self, 'func', classmethod(self._func))

if __name__ == "__main__":

a.func

我收到回溯錯誤

Traceback (most recent call last):

File "setattr_static.py", line 9, in

a.func

AttributeError: class a has no attribute 'func'

我想弄清楚的是,如何在不執行個體化對象的情況下動态地将類方法設定為類?

編輯:

這個問題的答案是

class a():

pass

def func(cls, some_other_argument):

return some_other_argument

setattr(a, 'func', classmethod(func))

if __name__ == "__main__":

print(a.func)

print(a.func("asdf"))

傳回以下輸出

>

asdf