定义三角形类Triangle,继承Shape类,在类中定义构造方法初始化3条边长,定义一个方法area实现求三角形的面积。

报错 AttributeError: 'float' object has no attribute 'x' 怎么解决


class Shape:
    def __init__(self,x,y):
        self.x = x
        self.y = y

    def area(self):
        pass
class Rectangle(Shape):
    def __init__(self,w,h):
        Shape.__init__(self,w,h)
    def area(self):
        return self.x*self.y
class Triangle(Shape):
    def __init__(self,a,b,c):
        Shape.__init__(a,b,c)
    def area(self):
        return (((a+b+c)/2)-a)*(((a+b+c)/2)-b)*(((a+b+c)/2)-c)*((a+b+c)/2)
d1 = Rectangle(2.0,4.0)
d2 = Triangle(3.0,4.0,5.0)
print(d1.area(),d2.area())

Triangle的类定义改成这样试试呢

class Triangle(Shape):
    def __init__(self,a,b,c):
        self.a=a
        self.b=b
        self.c=c
    def area(self):
        return (((self.a+self.b+self.c)/2)-self.a)*(((self.a+self.b+self.c)/2)-self.b)*(((self.a+self.b+self.c)/2)-self.c)*((self.a+self.b+self.c)/2)

你这个不是参数数量不匹配吗