如何更改子类python

时间:2015-11-18 16:18:48

标签: python oop namespaces subclassing

我有以下课程

class Foo():
    data = "abc"

我将其子类化

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

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

3 个答案:

答案 0 :(得分:11)

你问两个问题:

  
    
      

如何在Python中完成?

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

我的设计错了吗?

    
  

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

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

答案 1 :(得分: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"

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

abcdef

答案 2 :(得分:1)

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

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

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