Я новичок в ООП и пытаюсь использовать два класса. Я пытаюсь передать атрибут, который не создается, пока Class1
не будет запущен до Class2
, но я получаю AttributeError, когда я запускаю Class1
.
class Class1():
#some code....
def function1():
x=5
number=2
test=class2(x)
answer=Class2.function2(Class2,number)
print(answer)
class Class2():
def __init__(self, y):
self.y=y
def function2(self, z):
calculated_answer=self.y+z
return calculated_answer
#several more functions that also use y
Я пытаюсь избежать повторения определения y
как x
в каждой новой функции в Class2
, поэтому я подумал, что могу просто запустить Class2
с x
и затем использовать function2
с номером напечатать 7
. Вместо этого я получаю: AttributeError: type object 'Class2' has no attribute 'y'
.
Первоначально я думал, что я неправильно понял __init__
, поэтому я запустил этот код, чтобы убедиться:
class Class2():
def __init__(self, y):
self.y=y
def function2(self, z):
calculated_answer=self.y+z
return calculated_answer
x=5
test=class2(x)
Но это прекрасно работает, когда я набираю test.function2(2)
в оболочке, возвращая 7
, как и ожидалось.
Я думаю, что я неправильно понимаю, как использовать Class2
, но я не могу понять, что я делаю неправильно.
Как избавиться от этой ошибки, не определяя x
в каждой функции в Class2
?