这是CS61A lab10的代码的一部分,我不知道某些代码的作用。
class Expr:
def __init__(self, *args):
self.args = args
class Name(Expr):
def __init__(self, string):
Expr.__init__(self, string)
self.string = string
Name类是从Expr类继承的,并且具有实例string
。
但是,我不知道代码Expr.__init__(self, string)
的作用。似乎毫无意义,我可以在没有此行的情况下运行整个代码。那么为什么我们需要这条线呢?
感谢您的帮助
答案 0 :(得分:0)
实际上,您的Expr
类是由Name
类继承的。
从另一个类继承时,需要将父类(__init__()
)的构造函数(即Expr
)调用到子类(Name
)中。
答案 1 :(得分:0)
对于您的具体示例,这确实毫无意义,但实际行为是:
self.args
instance.args
和
instance.string
此外,这不是调用父构造函数的正确方法,您应该使用以下代码:
python 2.x
class Name(Expr):
def __init__(self, string):
super(Name, self).__init__(string)
self.string = string
python 3.x
class Name(Expr):
def __init__(self, string):
super().__init__(string)
self.string = string