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

2024-04-26 12:06:55 发布

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

我有下列课程

class Foo():
    data = "abc"

我把它分类

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

我试图在子类中编辑父类属性。我希望我的父类有一些字符串,我的子类应该向该字符串添加一些额外的数据。在Python中应该怎么做?我设计错了吗?


Tags: 数据字符串编辑data属性foodef分类
3条回答

可以从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

你问两个问题:

How it should be done in Python?

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

Am i wrong by design?

我通常不在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'

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

相关问题 更多 >