Я хочу, чтобы класс Inner изменил атрибут экземпляра объекта (o), в данном случае, "some_var"; o.some_var.
Я уже пробовал искать в Google и в stackoverflow о вложенных классах и о том, как внутренний класс может обращаться к атрибутам внешнего класса. Я изменил параметры, взятые внутренним классом, такие как экземпляр объекта (self), без эффекта.
class Outer:
def __init__(self):
self.some_var = 1
self.Inner = Inner()
class Inner:
def print_some_var(self):
print("I'm Inner's method, printing:", self.some_var)
def change_some_var(self, n):
self.some_var = n
o = Outer()
print("Printing directly.", o.some_var)
o.Inner.print_some_var()
o.Inner.change_some_var(5)
o.Inner.print_some_var()
Мне нужны две вещи из этого кода, оба основаны на доступе к классу Inner класса Inner, а также на его изменении / чтении путем статического вызова (класс Inner) и изменения атрибута объекта класса Outer (some_var ). Как:
- измените объект some_var класса Outer, вызвав класс Inner, например, "o.Inner.change_some_var (5)".
- распечатайте / прочитайте объект some_var класса Outer, также статически вызывая класс Inner внутри экземпляра объекта, например "o.Inner.print_some_var ()".
Вместо этого интерпретатор python выдает мне исключение:
Traceback (most recent call last):
File "nestedclasses.py", line 16, in <module>
o.Inner.print_some_var()
File "nestedclasses.py", line 8, in print_some_var
print("I'm Inner's method, printing:", self.some_var)
AttributeError: 'Inner' object has no attribute 'some_var'