Множественное наследование с несколькими родителями - PullRequest
0 голосов
/ 27 апреля 2019

База является суперклассом.
Имеет переменную экземпляра = сторон .
Имеет метод show () , который дает значение стороны .

Круг наследует База .
Имеет show () метод, который печатает имя класса.

Треугольник наследует База .
Имеет show () метод, который печатает имя класса.

Квадрат наследует База.
Имеет метод show () , который печатает имя класса.

Shape наследует Круг , Треугольник , Квадрат .
Он имеет show () метод, который печатает "Я в форме"

Мы должны создать экземпляр Shape class и доступ к show () методу Circle class с использованием созданного экземпляра.

Я хочу получить доступ к show () метод только круг , а не show () метод Shape класса.

Как это сделать?

class Base:
    def __init__(self,sides):
        self.sides=sides

    def show(self):
        return self.sides

class Triangle(Base):
    def show(self):
        print("Triangle")

class Square(Base):
    def show(self):
        print("Square")

class Circle(Base):
    def show(self):
        print("Circle")

class Shape(Circle,Square,Triangle):
    def __init__(self):
        super(Shape,self).show()
    def show(self):
        print("i am in shape")

a=Shape()
a.show()

Я пытался получить вывод в виде:

Circle

Но код GIVINдайте мне вывод:

Circle
i am in shape

как изменится код, если мне нужно вызвать метод show класса Circle с помощью a.show () с использованием экземпляра класса Shape?

1 Ответ

0 голосов
/ 27 апреля 2019

Вы должны оставить super(Shape,self).show() как есть и просто создать экземпляр Shape, который выведет Circle, как показано ниже.Exta a.show(), который вы вызываете, печатает дополнительные i am in shape

class Shape(Circle,Square,Triangle):

    def __init__(self):
        super(Shape,self).show()

    def show(self):
        print("i am in shape")

#The constructor is called
a=Shape()
#Circle

#The show function of class Shape is called
a.show()
#i am in shape

Если вы хотите явно получить доступ к методу show для Circle, вам нужно создать экземпляр этого объекта.

a=Circle(2)
a.show()
#Circle

Кроме того, посмотрите: Как Python super () работает с множественным наследованием? для получения дополнительной информации о том, как super работает для множественного наследования

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