如何更改子类python中的父属性

Geo*_*rge 10 python oop namespaces subclassing

我有以下课程

class Foo():
    data = "abc"
Run Code Online (Sandbox Code Playgroud)

我把它子类化了

class Bar(Foo):
    data +="def"
Run Code Online (Sandbox Code Playgroud)

我正在尝试编辑子类中的父类属性.我希望我的父类有一些字符串,我的子类应该为该字符串添加一些额外的数据.如何在Python中完成?我设计错了吗?

Rob*_*obᵩ 13

你问两个问题:

如何在Python中完成?

class Bar(Foo):
    data = Foo.data + "def"
Run Code Online (Sandbox Code Playgroud)

我设计错了吗?

我通常不在Python中使用类变量.更典型的范例是初始化实例变量:

>>> class Foo(object):
...  data = "abc"
... 
>>> class Bar(Foo):
...     def __init__(self):
...         super(Bar, self).__init__()
...         self.data += "def"
... 
>>> b = Bar()
>>> b.data
'abcdef'
>>> 
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以从Bar类初始化Foo类的状态,然后附加到数据,如下所示:

class Foo(object):
    def __init__(self):
        self.data = "abc"

class Bar(Foo):
    def __init__(self):
        super(Bar, self).__init__()
        self.data += "def"
Run Code Online (Sandbox Code Playgroud)

实例化Bar实例时,结果的数据值为:

abcdef
Run Code Online (Sandbox Code Playgroud)