基础是超类。
它具有实例变量= 边。
它具有 show()方法,该方法给出了边数的值。
圆圈继承了基础。
它具有 show()方法,该方法会打印类名。
三角形继承了基础。
它具有 show()方法,该方法会打印类名。
正方形继承了基础。
它具有 show()方法,该方法会打印类名。
形状继承了圆形,三角形,正方形。
它具有 show()方法,该方法可打印“我的体形”
我们必须创建 Shape 类的实例,并使用创建的实例访问 Circle 类的 show()方法。 / p>
我只想访问 Circle 的 show()方法,而不能访问 Shape < / strong>课程。
我该怎么做?
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
但是代码给我的输出是:
Circle
i am in shape
如果我必须使用Shape类的实例通过a.show()调用Circle类的show方法,代码将如何更改?
答案 0 :(得分:0)
您应该将super(Shape,self).show()
保留原样,而只是实例化Shape
,它将如下打印Circle
。您正在呼叫的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
的{{1}}方法,则需要实例化该对象。
Circle
此外,请查看:How does Python's super() work with multiple inheritance?,以获得有关super如何用于多重继承的更多信息