Python “问题”;“自我”;从我编写的类继承时的运算符

Python “问题”;“自我”;从我编写的类继承时的运算符,python,class,inheritance,self,Python,Class,Inheritance,Self,我在一个文件中定义了两个类。我可以在将类分成两个文件后运行它,但我想知道为什么第一次尝试不起作用 回溯读取: 回溯(最近一次呼叫最后一次): 文件“Polygon.py”,第15行,在 类三角形(多边形): 文件“Polygon.py”,第21行,三角形 印刷品(单面) NameError:未定义名称“self” 我的代码的基本内容如下 类多边形: 定义初始(自,无边): self.n=没有任何边 self.sides=[0表示范围内的i(没有任何边)] 类三角形(多边形): 定义初始化(自)

我在一个文件中定义了两个类。我可以在将类分成两个文件后运行它,但我想知道为什么第一次尝试不起作用

回溯读取:

回溯(最近一次呼叫最后一次):
文件“Polygon.py”,第15行,在
类三角形(多边形):
文件“Polygon.py”,第21行,三角形
印刷品(单面)
NameError:未定义名称“self”
我的代码的基本内容如下

类多边形:
定义初始(自,无边):
self.n=没有任何边
self.sides=[0表示范围内的i(没有任何边)]
类三角形(多边形):
定义初始化(自):
多边形.uuu init_uuuu(self,3)
当我将其作为类的主体运行时,它抛出了相同的NameError

class Triangle(Polygon):
    self.a = 1

看起来您要做的是在class
Triangle
中定义class属性
a
。你不需要
self
就能做到这一点
self
用于访问类的对象实例

如果要将
定义为对象属性而不是类属性,则应执行以下操作:

class Triangle(Polygon):
    def __init__(self):
        Polygon.__init__(self, 3)
        self.a = 1
在这种情况下,
a
仅在类实例化时定义,可作为
Triangle().a
或其他对象范围方法中的
self.a
访问

如果要将
定义为类属性,只需执行以下操作:

class Triangle(Polygon):
    a = 1

    def __init__(self):
        ...

在这种情况下,
a
是根据类定义定义的,甚至在实例化之前就可以访问,如
Triangle。a

Self不在我所期望的类主体的范围内。不清楚您到底想要什么您的回溯不适合您的代码。不存在有问题的界线。