python - 从我编写的类继承时出现“self”运算符的问题
问题描述
我在一个文件中定义了两个类。在将类分成两个文件后,我能够运行它,但我想知道为什么第一次尝试不起作用。
回溯阅读:
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
解决方案
看起来您正在尝试做的是a
在 class中定义一个类属性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
推荐阅读
- json - 如何在不编码的情况下将 JSON 文件导入 Excel?
- excel - 是否可以使用输入框从 excel 表中选择一行,然后从该行中选择特定的单元格值来填写其余的 VBA 代码?
- linux - Linux:SFTP尝试失败后不存在目录存在错误?
- mysql - 为什么即使不应该插入 MySQL 仍然插入
- c - 找不到哪个文件代表您需要链接的库
- javascript - Firestore 更新数据未捕获(承诺中) FirebaseError:缺少权限或权限不足
- audio - 使用来自 Audio 对象的预加载音频(即 html 中没有音频标签)
- r - 如何按组有条件地计算唯一值
- python - 如何从字符串中删除随机字符?
- image - 再拍一张傅里叶变换的照片,画面会发生什么样的变化?(2次傅里叶变换相同的图像)