Python:如何从同一个类的类方法中调用实例方法
作者:互联网
我有一个课程如下:
class MyClass(object):
int = None
def __init__(self, *args, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
def get_params(self):
return {'int': random.randint(0, 10)}
@classmethod
def new(cls):
params = cls.get_params()
return cls(**params)
我希望能够做到:
>>> obj = MyClass.new()
>>> obj.int # must be defined
9
我的意思是没有创建MyClass的新实例,但显然它并不那么简单,因为调用MyClass.new()会引发TypeError:必须使用MyClass实例作为第一个参数调用未绑定方法get_params()(没有任何改为)
有没有办法实现这个目标?
谢谢
解决方法:
不,你不能也不应该在没有实例的情况下从类中调用实例方法.这将是非常糟糕的.但是,您可以调用类方法和实例方法.选项是
>使get_param成为一个类方法并修复对它的引用
>让__init__调用get_param,因为它是一个实例方法
此外,您可能对AttrDict感兴趣,因为这看起来就像您要做的那样.
标签:python,python-2-7,oop,class-method 来源: https://codeday.me/bug/20191006/1861729.html