Класс наследования Python 3.6: похожие методы - PullRequest
0 голосов
/ 28 февраля 2019

Я не самая сильная опора, когда дело доходит до наследования классов, так что вот мой довольно глупый вопрос.Следуя приведенному ниже коду, я логично предположил бы, что после вызова 'super' указатель прибывает в self.example (), который, в свою очередь, ссылается на метод 'example' в том же классе, и будет напечатано значение 20.

class A(object):
    def __init__():
        self.example()
    def example(self):
        print(20)

class B(A):
    def __init__():
       super().__init__()
    def example(self):
        print(10)

x = B()

Результат: 10

Это явно не тот случай, вместо этого печатается 10.Может ли кто-нибудь пролить свет на таинственный мир наследования классов.

1 Ответ

0 голосов
/ 28 февраля 2019
class A(object):
    def __init__():
        self.example()
    def example(self):
        print(20)

class B(A):
    def __init__():
       super().__init__()

x = B()
x.example()

Посмотрите на это, например.

Когда вы наследуете B, от A, тогда пример метода наследуется от B, вы не должны переписывать это в B. Конечно, вы все равно можете написать этометод для B, затем вы переопределите метод 'A' для объектов класса B.

Вы также можете использовать один класс для наследования со многими другими:

class Base(object):
    def __init__(self):
        print("Base created")

class ChildA(Base):
    def __init__(self):
        Base.__init__(self)

class ChildB(Base):
    def __init__(self):
        super(ChildB, self).__init__()

ChildA()
ChildB()

У ChildB есть другой вызовчто эквивалентно используемому в примере выше.

...