Я просто играю с языком, но задаюсь вопросом, возможно ли использовать функции, определенные в области видимости класса, без явного определения self
в качестве первого аргумента.
Я понимаю, что "правильный" способ реализации класса может быть
class minimal:
variable = 1
def add(self,x,y):
return x+y
def __init__(self,x):
self.value = self.add(x,self.variable)
m = minimal(1)
print m.value
--> 2
Однако, если я определяю и применяю add
аналогично variable
(в области действия класса), то я получаю ошибку (ожидаемо):
class minimal:
variable = 1
def add(x,y):
return x+y
def __init__(self,x):
self.value = self.add(x,self.variable)
m = minimal(1)
print m.value
--> TypeError: add() takes exactly 2 arguments (3 given)
Есть ли способ обойти это? Или это обычно рекомендуется, чтобы все было определено с явной ссылкой на self
(т.е. self.variable=1
, определенный в методе __init__
и add
, определенный с self
в качестве первого аргумента)?
Правка __init__
Исправлен метод присвоения self.value
во втором случае вместо попытки вернуть значение (непреднамеренное).