不确定如何使用python中的子类和超类完成此任务

时间:2017-05-30 11:56:08

标签: python inheritance subclass superclass

任务是定义一个名为' Shape'及其子类' Square' Square类有一个' init'将给定长度作为参数的函数。这两个类都有一个区域函数,可以打印形状区域,默认情况下Shape的区域为0。

这就是我现在所拥有的:

class Shape:
    area = 0
    def __init__(self, ??):



class Square(Shape):

    def __init__(self, length):
        self.length = length

    def area(self):
        a = (self.length * self.length)
        print('The area of a square with a side length of %f is %f' % (self.length, a))


s = Square(2)
s.area()

我不确定在Shape超类中要做什么。

1 个答案:

答案 0 :(得分:0)

我想您要覆盖area类中的默认函数Shape。然后,当你有一个形状列表 - 一些Shape,一些Square甚至可能是一些Polygon时,你可以通过调用area打印它们而不知道哪个它就是这样的。多态性!

class Shape:
    def __init__(self):
        pass

    def area(self):
        print(0)

在创建子类的实例时调用超类的构造函数也很重要。对于超类的内部结构可能有一些必要的启动:

class Square:
    def __init__(self, length):
        self.length = length
        super(Square, self).__init__()