【发布时间】:2020-11-09 12:39:39
【问题描述】:
我有两个 .py 文件,一个用于 main(main.py) 模块,另一个包含一个类及其子类 (sub.py)。在主文件中,我使用的类如下。
## (main.py)
# Import the superclass
from sub import Class1
# Import the subclass
from sub import Class2
# Assign the object (it gives an error as described below)
myVariable=Class2()
我在 sub.py 中写这两个类的地方
## (sub.py)
class Class1:
def __init__(self, nugget=0):
self.eigval=nugget
self.eigvec=nugget
self.explained=nugget
class Class2(Class1):
def __init__(self, nugget=0):
super().__init__(eigval, eigvec, explained)
self.ppc=nugget
self.vol=nugget
self.corr=nugget
self.cov=nugget
我得到的错误是
NameError: name 'eigval' is not defined
虽然我在子类中使用 super() 继承了变量 eigval。 为什么会这样??
【问题讨论】:
-
在
Class2.__init__中,变量eigval未在该范围内的任何地方定义。有一个self.eigval,但它也不存在。此外,super().__init__会给你Class1.__init__,它需要一个参数,但你试图传递 3...我认为你的意思是super().__init__(nugget) -
>>我认为你的意思是 super().__init__(nugget) 是的,这就是我的意思。感谢您的评论。我理解了这个问题以及如何解决它:)
标签: python inheritance subclass superclass nameerror