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

如何更改子类python中的父属性,python,oop,namespaces,subclassing,Python,Oop,Namespaces,Subclassing,我有以下课程 class Foo(): data = "abc" 我给它分类 class Bar(Foo): data +="def" 我正在尝试编辑子类中的父类属性。我希望我的父类有一些字符串,我的子类应该向该字符串添加一些额外的数据。在Python中应该如何实现?我的设计错了吗?你问了两个问题: 在Python中应该如何实现 我的设计错了吗 我通常不在Python中使用类变量。更典型的范例是初始化实例变量: >>> class Foo(object):

我有以下课程

class Foo():
    data = "abc"
我给它分类

class Bar(Foo):
    data +="def"
我正在尝试编辑子类中的父类属性。我希望我的父类有一些字符串,我的子类应该向该字符串添加一些额外的数据。在Python中应该如何实现?我的设计错了吗?

你问了两个问题:

在Python中应该如何实现

我的设计错了吗

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

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

您可以通过常规属性访问从Bar的命名空间中引用Foo的类变量:

class Bar(Foo):
    data = Foo.data + 'def'

我不知道这是否是一种好的做法,但没有理由不好。

您可以从Bar类初始化Foo类的状态,然后像这样附加到数据:

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

class Bar(Foo):
    def __init__(self):
        super(Bar, self).__init__()
        self.data += "def"
实例化Bar实例时,结果数据的值为:

abcdef

无法编辑,因为更改太小,但请确保添加结束报价。谢谢!顺便问一下,以这种方式在类中存储数据是一种好的做法吗?
abcdef