python变量如何继承

2024-09-30 02:17:10 发布

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

我正在尝试一些非常基本的Python继承:

import os

class Parent:
    def __init__(self):
        self.text = 'parent'

    def getText(self):
        print self.text

class Child1(Parent):
    def __init__(self):
        self.x = 'x'

class Child2(Parent):
    def __init__(self):
        self.x = 'x'

if __name__ == "__main__": 
    parent = Parent()
    child1 = Child1()
    child2 = Child2()

    parent.getText()
    child1.getText()
    child2.getText()

但我总是

Child1 instance has no attribute 'text'

如何将变量传递给子级?(我有Java/C#的背景,不太懂Python)


Tags: textimportselfinitosdefclassparent
3条回答

在python中,当您重写一个应该继承的函数时,您将重写它的所有部分,In it也不例外。您应该调用函数super方法来使用基初始值设定项,或者在已重写的构造函数中实现该属性。

class Parent:
    def __init__(self):
        self.text = 'parent'

    def getText(self):
        print self.text

class Child1(Parent):
    def __init__(self):
        super(Child1, self).__init__()
        self.x = 'x'

child1.getText()

现在应该可以了。

您需要手动调用父类的构造函数-这里,self.text是在Parent构造函数中初始化的,该构造函数从不被调用:

class Child1(Parent):
    def __init__ (self):
        super(Child1, self).__init__ ()
        # or Parent.__init__ (self)
        self.x = 'x'

init函数需要调用父init

class Child1(Parent):
def __init__(self):
    self.x = 'x'
    Parent.__init__(self)

相关问题 更多 >

    热门问题