В вашем методе ObjB.__init__()
вы вызываете super().__init__(aname)
перед тем, как установить self.job = ajob
, поэтому при вызове методов decorate
self.job
еще не установлено. Попробуйте переместить self.job = ajob
ранее в методе __init__()
, например:
class ObjB(ObjA):
def __init__(self, aname, ajob):
self.job = ajob
super().__init__(aname)
Другим способом решения проблемы является полное устранение методов decorate()
:
class ObjA():
def __init__(self, astr):
self.name = '['+astr+']'
class ObjB(ObjA):
def __init__(self, aname, ajob):
super().__init__(aname)
self.job = ajob
self.name = self.name + ' is a ' + self.job