我在一个文件中定义了两个类。将类分成两个文件后,我能够运行它,但是我想知道为什么第一次尝试不起作用。
回溯显示为:
Traceback (most recent call last):
File "Polygon.py", line 15, in <module>
class Triangle(Polygon):
File "Polygon.py", line 21, in Triangle
print(self.sides)
NameError: name 'self' is not defined
我的代码的基本内容如下
class Polygon:
def __init__(self, no_of_sides):
self.n = no_of_sides
self.sides = [0 for i in range(no_of_sides)]
class Triangle(Polygon):
def __init__(self):
Polygon.__init__(self,3)
当我将其作为Triangle类的正文运行时,它引发了相同的NameError
class Triangle(Polygon):
self.a = 1
答案 0 :(得分:1)
您似乎正在尝试做的是在类a
中定义一个类属性Triangle
。您不需要self
来执行此操作。 self
用于访问类的对象实例。
如果您想将a
定义为对象属性而不是类属性,则应执行以下操作:
class Triangle(Polygon):
def __init__(self):
Polygon.__init__(self, 3)
self.a = 1
在这种情况下,a
仅在类实例化时定义,并且可以作为Triangle().a
或在其他对象范围方法中作为self.a
进行访问。
如果您想将a
定义为类属性,只需执行以下操作:
class Triangle(Polygon):
a = 1
def __init__(self):
...
在这种情况下,a
是在类定义时定义的,甚至可以在实例化之前作为Triangle.a
来访问