如果这是一个微不足道的问题,我道歉。我试图将子类变量作为父类__init__()
中的参数传递,但得到一个未定义的名称'警告。
例如:子类(JumpingJacks
)变量PATH
被视为未定义的名称'当我尝试在父类(Exercise
)实例化中使用它时。
class JumpingJacks(Exercise):
"""Creates JumpingJack instance, an Exercise with default attributes
common to the Exercise (parent) and unique to JumpingJacks:
Exercise(name, reps, per_side=False, path=None)
"""
PATH = "Jumping Jacks.PNG"
def __init__(self, reps, name="Jumping Jacks"):
Exercise.__init__(self,
name, reps,
per_side=False,
path=PATH)
我怀疑答案与类继承有关,但由于PATH
在父类__init__()
期间是本地的,我不明白为什么PATH
未定义。我一直无法找到简明扼要的解释。这是我误解或做错了的哪一部分?
我意识到我可以将路径硬编码到父类__init__()
中,如下所示:
path="Jumping Jacks.PNG"
而不是:
path=PATH
但我认为如果所有实例共享公共变量,则使用类变量的更好做法。如果这种思维方式不正确,请纠正我。
如何调用父类__init__()
中的子类变量?