在 Python 中使用子类时出现 NameError

NameError when using a subclass in Python

我有两个 .py 文件,一个用于主 (main.py) 模块,另一个包含 class 及其子 class (sub.py)。在主文件中,我使用 class 如下。

## (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 中的两个 class 写成

## (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

尽管我在子class 中使用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__ 将从 Class1 调用 __init__,因此您的 Class2 实例将具有 eigvaleigvec,以及 explained 个成员。

>>> c = Class2()
>>> c.eigval
0