擅长:python、mysql、java
<p>假设只有一个父类,可以使用在子类的答案末尾定义的<code>inherit_and_append</code>装饰器来获得所需的结果,如下所示:</p>
<pre><code>class A(object):
cl_att = 'I am an A class attribute'
@inherit_and_append('cl_att')
class B(A):
cl_att = ' modified for B type'
@inherit_and_append('cl_att')
class C(A):
cl_att = ' modified for C type'
</code></pre>
<p>如果有更高级的要求或条件,可以进一步扩展decorator。你知道吗</p>
<pre><code>class inherit_and_append(object):
def __init__(self, *attrs):
super(inherit_and_append, self).__init__()
self._attrs = attrs
def __call__(self, klass):
parent = klass.__bases__[0] # Assuming you have a single parent class
for attr in self._attrs:
if not hasattr(parent, attr):
raise AttributeError("'{}' class has no '{}' attribute".format(parent.__name__, attr))
parent_value = getattr(parent, attr)
klass_value = getattr(klass, attr)
setattr(klass, attr, parent_value + klass_value)
return klass
</code></pre>