在Python中使用子类时发生NameError

2024-09-22 16:41:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个.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。 为什么会这样


Tags: 文件thefrompyimportselfinitmain
1条回答
网友
1楼 · 发布于 2024-09-22 16:41:13

除了nuggetClass2之外,您不需要传递任何内容

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实例将具有eigvaleigvecexplained成员,这是正确的

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

相关问题 更多 >