如何解决在Python中使用子类时出现NameError
我有两个.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。 为什么会这样?
解决方法
您无需将nugget
以外的任何内容传递给Class2
class Class2(Class1):
def __init__(self,nugget=0):
super().__init__(nugget)
self.ppc=nugget
self.vol=nugget
self.corr=nugget
self.cov=nugget
否则,您是正确的,super().__init__
将从__init__
调用Class1
,因此您的Class2
实例将具有eigval
,eigvec
,和explained
个成员。
>>> c = Class2()
>>> c.eigval
0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。