У меня есть класс следующим образом: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()
throws TypeError: unbound method get_params() must be called with MyClass instance as first argument (got nothing instead)
Есть ли способ сделать так? Thanks
Почему бы вам не сделать 'get_params' класс? – BrenBarn
«MyClass» - пример, «get_params» представляет метод, который широко известен из других методов ** instance ** в моем классе, и я думаю, что должен быть какой-то способ вызвать его из класса, вместо того, чтобы изменять ВСЕ методы, которые в настоящее время называют это. Спасибо в любом случае :) – Gerard
Что делает 'get_params'? Если это метод экземпляра, вам нужно будет иметь экземпляр для его вызова. Если вы этого не сделаете, это, вероятно, не должно быть методом экземпляра. Вы можете вызвать метод экземпляра из любой другой области, хотя, просто предоставив экземпляр класса как явный первый аргумент. –