Положить данные в класс в классе
Есть класс, в котором есть класс(работаю с disnake, поэтому нельзя вытащить класс снаружи). Я не могу обозначить значения в классе. Как решить проблему?
class main():
def __init__(self):
self.a = 5
class subMain():
def __init__(self1):
self1.a = self.a #Здесь выходит ошибка
Ошибка:
NameError: name 'self' is not defined. Did you mean: 'self1'?
Конечно, если написать class subMain(self)
то тоже выходит ошибка, но ошибка NameError: name 'self' is not defined
Ответы (1 шт):
Для решения данной проблемы вам потребуется изменить структуру класса таким образом, чтобы вложенный класс subMain имел доступ к значениям извне.
Одним из возможных решений является передача ссылки на экземпляр внешнего класса main внутрь вложенного класса subMain. Это можно сделать, добавив аргумент parent к конструктору класса subMain и передавая в него ссылку на экземпляр класса main.
Вот пример исправленного кода:
class main():
def __init__(self):
self.a = 5
self.sub = self.subMain(self) # Передача ссылки на родительский класс
class subMain():
def __init__(self, parent):
self.a = parent.a # Доступ к значению "a" родительского класса
def print_a(self):
print(f"a = {self.a}")
print(f"sub.a = {self.sub.a}")
m = main()
m.print_a()
Теперь класс subMain имеет доступ к значению a из родительского класса main.