Я столкнулся с этим вопросом, пытаясь выяснить, как иметь классы-члены для доступа к данным от своего родителя, когда они являются частью внешнего модуля.Python - Доступ к родительским элементам
В основном, это работает (класс B может получить доступ в методы родителя, как так: A.say_hi (А)):
class A:
def __init__(self):
print("Initializing parent object...")
self.child = self.B()
class B:
def __init__(self):
print("Initializing child...")
A.say_hi(A)
def say_hi(self):
print("A class says hi")
Однако, это может быть довольно неаккуратно, если классы начинают получать очень большой, так Я размещал свои дополнительные классы в файлах и импортировал их в очередь. Проблема в том, что я больше не могу получить класс-член для доступа к членам и функциям своего родителя, если я попытаюсь использовать «import B.py», когда класс B определен внутри.
Есть ли способ получить исходное поведение, не выходя из класса элемента в том же файле, что и родительский?
какая версия python вы используете? в 2.7 он не работает, поскольку вы проходите A (класс), где ожидается экземпляр – soulcheck
Правильно ли ваш отступ? Кажется, это не так. «класс B может получить доступ к методам родительского типа: A.say_hi (A)» не имеет никакого смысла. Поскольку «A.say_hi (A)» - очень, очень своеобразный Python. Вы смущены о наследовании? Это ваш вопрос? –
@soulcheck работает в py3k (с отступом, как и в сообщении) – joaquin