问题描述
我有两个.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