вы не можете добавить, вы заменяете, но вы можете заменить выражением, которое включает в себя оригинал:
class A(object):
var = "1, 2, 3"
class B(A):
var = A.var + ", 4"
instance = B()
instance.var # = 1, 2, 3, 4
Это делает это для простых целей, но более интересным решением может быть использованиедескриптор;Самый простой способ - использовать property
class A(object):
var = "1, 2, 3"
class B(A):
_subvar = ", 4"
@property
def var(self):
return super(B, self).var + self._subvar
instance = B()
instance.var # = 1, 2, 3, 4
, который работает для экземпляров B
, но не для самого B
(как в первом примере).Чтобы получить это обратно, вы должны реализовать свой собственный дескриптор:
class Appender(object):
def __init__(self, cls, attr):
self.cls = cls
self.attr = attr
def __get__(self, instance, owner):
var = super(self.cls, owner).var
return var + getattr(self.cls, self.attr)
class B(A):
_realvar = ', 4'
B.var = Appender(B, '_realvar')
, который одинаково хорошо работает на классе, как и на экземплярах класса