在 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
实例将具有 eigval
、eigvec
,以及 explained
个成员。
>>> c = Class2()
>>> c.eigval
0
我有两个 .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
实例将具有 eigval
、eigvec
,以及 explained
个成员。
>>> c = Class2()
>>> c.eigval
0