У меня есть ситуация как так...
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
класс?
Методы вложенного класса не могут напрямую обращаться к атрибутам экземпляра внешнего класса.
Обратите внимание, что не обязательно, что экземпляр внешнего класса существует даже тогда, когда вы создали экземпляр внутреннего класса.
На самом деле, часто рекомендуется не использовать вложенные классы, поскольку вложение не подразумевает какой-либо конкретной связи между внутренним и внешним классами.
Вы имеете в виду использовать наследование, а не вложенные классы, как это? То, что вы делаете, не имеет смысла на Пайтоне.
Вы можете получить доступ к 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
)