的一类方法调用一个实例方法我有一个类如下:的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: unbound method get_params() must be called with MyClass instance as first argument (got nothing instead)
有什么办法可以实现吗? 谢谢
你为什么不把'get_params'作为一个类方法呢? – BrenBarn 2013-05-07 19:57:09
'MyClass'就是一个例子,'get_params'表示一个被我的类中的其他**实例**方法广泛调用的方法,我认为应该有一种方法来从classmethod调用它,而不是改变所有的目前称之为的方法。无论如何感谢:) – Gerard 2013-05-07 20:01:11
'get_params'做什么?如果它是一个实例方法,你应该需要一个实例来调用它。如果你不这样做,它可能不应该是一个实例方法。您可以从任何其他范围调用实例方法,只需提供该类的实例作为显式的第一个参数即可。 – 2013-05-07 20:01:13