Несколько вопросов в вашем вопросе немного сбивают с толку, но я думаю, что вам нужно что-то вроде этого примера (python2.7):
class base(object):
name = ""
def __init__(self, name):
self.user =user
def context(self, value):
return [value]
class override(base):
name = "override"
def context(self, value):
base_context = super(override, self).context(value)
a = ["hello", "a"] + base_context
def description(self):
return "override description"
Вы можете сделать следующее:
>>> a = override()
>>> override.context("value")
["hello", "a", "value"]
>>> override.description()
"override description"
Однако вызов этих методов для base
дает разные результаты:
>>> a = base()
>>> a.context("value")
["value"]
>>> base.description()
Traceback (most recent call last):
...
AttributeError: 'base' has no attribute 'description'
Хотя не совсем понятно, хотите ли вы этого, потому что вы ссылаетесь на base.context
получениезначение от override.context
, тогда как обычно это происходит наоборот.То же самое касается override.description
.Если вы действительно хотите, чтобы base.context
получил значение из override.context
, это можно сделать с помощью base.__subclasses__()
, но вам придется иметь дело со всеми подклассами base
, и этот вид использования крайне редок (и обычно нежелателен).).