如何更改子类中的父属性 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
我有以下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