Как python справляется с этой проблемой наследования? - PullRequest
0 голосов
/ 14 февраля 2019
class A:
    def __init__(self):
        print('I am A')


class B(A):
    def b(self):
        print('I am B.b')


class C(A):
    def c(self):
        x.b()


if __name__ == '__main__':
    x = B()
    y = C()
    y.c()

Как это работает, когда дело доходит до 'yc ()'?В Cc (), как экземпляр x может быть вызван без создания экземпляра раньше?Большое спасибо, если кто-то может помочь.

1 Ответ

0 голосов
/ 14 февраля 2019

не может.В вашем случае, случается так, что когда вы вызываете x.b(), существует глобальная переменная с именем x, имеющая тип B.Он был инициализирован в предыдущей строке с x = B().

Этот код зависит от внешних переменных и в целом завершится с ошибкой.Если вы хотите вызвать собственный метод объекта, используйте self.b().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...