该类如何从基类继承

时间:2019-04-10 16:40:15

标签: python inheritance

这是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)的作用。似乎毫无意义,我可以在没有此行的情况下运行整个代码。那么为什么我们需要这条线呢?

感谢您的帮助

2 个答案:

答案 0 :(得分:0)

实际上,您的Expr类是由Name类继承的。

从另一个类继承时,需要将父类(__init__())的构造函数(即Expr)调用到子类(Name)中。

答案 1 :(得分:0)

对于您的具体示例,这确实毫无意义,但实际行为是:

  • Name 类上,您正在调用Expr构造函数
  • Expr 构造函数将其参数保存到实例变量self.args
  • 最后,该实例将具有两种访问字符串参数的方式:

instance.argsinstance.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