Python继承程序

2024-04-19 02:55:24 发布

您现在位置:Python中文网/ 问答频道 /正文

错误是:

Equilateral object has no attribute angle1.

请建议如何修复此错误,也请解释self是如何工作的。我很困惑在哪里可以使用自我,在哪里不可以

^{pr2}$

Tags: noselfobject错误attribute建议haspr2
3条回答

您必须从超级类调用__init__

class Triangle(object):
     number_of_sides=3

     def __init__(self,angle1,angle2,angle3):
        self.angle1=angle1
        self.angle2=angle2
        self.angle3=angle3

     def check_angles(self):
        return self.angle1+self.angle2+self.angle3==180:

class Equilateral(Triangle):
    angle=60
    def __init__(self):
        Triangle.__init__(self, self.angle, self.angle, self.angle)

man=Equilateral()
man.check_angles()

与其他语言不同,Python不调用超级类的__init__()。你得自己叫它:

class Equilateral(Triangle):
    angle=60
    def __init__(self, ...):
        super().__init__(...)
        self.angle=self.angle1

更多details

你错了方向

self.angle1= self.angle
etc

Self引用实例化的对象,很像java中的“this”。使用此关键字将属性附加到对象。在

在对象上定义变量时,类定义开始处的属性不需要self—它们是对象的所有实例在实例化时创建的类属性,而使用self更改或设置的变量是实例变量,并不是在对象的所有实例上都能找到的。在

相关问题 更多 >