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

How to change parent attribute in subclass python

我有以下class

class Foo():
    data = "abc"

我分class它

class Bar(Foo):
    data +="def"

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

你问了两个问题:

How it should be done in Python?

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

Am i wrong by design?

我一般不在Python中使用class变量。比较典型的范式是初始化一个实例变量:

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

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

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

我不知道这是否是一个好习惯,但没有理由说它不好。

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

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

class Bar(Foo):
    def __init__(self):
        super(Bar, self).__init__()
        self.data += "def"

当您实例化 Bar 的实例时,产生的数据值为:

abcdef