Доступ внешний класс от внутреннего класса в Python

У меня есть ситуация как так...

class Outer(object):

    def some_method(self):
        # do something

    class Inner(object):
        def __init__(self):
            self.Outer.some_method()    # <-- this is the line in question

Как я могу получить доступ Outer метод класса от Inner класс?

86
задан Neuron 22 November 2019 в 15:56
поделиться

2 ответа

Методы вложенного класса не могут напрямую обращаться к атрибутам экземпляра внешнего класса.

Обратите внимание, что не обязательно, что экземпляр внешнего класса существует даже тогда, когда вы создали экземпляр внутреннего класса.

На самом деле, часто рекомендуется не использовать вложенные классы, поскольку вложение не подразумевает какой-либо конкретной связи между внутренним и внешним классами.

56
ответ дан 24 November 2019 в 08:03
поделиться

Вы имеете в виду использовать наследование, а не вложенные классы, как это? То, что вы делаете, не имеет смысла на Пайтоне.

Вы можете получить доступ к Outer's some_method, просто обратившись к Outer.some_method внутри внутренних методов класса, но это не сработает так, как вы ожидаете. Например, если попробовать так:

class Outer(object):

    def some_method(self):
        # do something

    class Inner(object):
        def __init__(self):
            Outer.some_method()

...то при инициализации объекта Inner вы получите ошибку TypeError, так как Outer.some_method ожидает получить в качестве первого аргумента экземпляр Outer. (В приведенном выше примере вы в основном пытаетесь вызвать some_method в качестве метода класса Outer)

.
4
ответ дан 24 November 2019 в 08:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: