Если я определяю небольшую программу 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 <module>
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"))
возвращает следующий вывод
<bound method type.func of <class '__main__.a'>>
asdf