Inheritance problem
Diez B. Roggisch
deets at nospam.web.de
Wed Nov 5 12:59:08 EST 2008
Mr.SpOOn wrote:
> Hi,
> I have a problem with this piece of code:
>
>
> class NoteSet(OrderedSet):
> def has_pitch(self):
> pass
> def has_note(self):
> pass
>
> class Scale(NoteSet):
> def __init__(self, root, type):
> self.append(root)
> self.type = type
> ScaleType(scale=self)
>
> OrderedSet is an external to use ordered sets. And it has an append
> method to append elements to the set.
>
> When I try to create a Scale object:
>
> s = Scale(n, '1234567') # n is a note
>
> I get this error:
>
> Traceback (most recent call last):
> File "notes.py", line 276, in <module>
> s = Scale(n, '1234567')
> File "notes.py", line 243, in __init__
> self.append(root)
> File "ordered_set.py", line 78, in append
> self._insertatnode(self._end.prev, element)
> AttributeError: 'Scale' object has no attribute '_end'
>
> I can't understand where the error is.
> Can you help me?
You need to call the __init__ of NoteSet inside Scale, as otherwise the
instance isn't properly initialized.
class Scale(NoteSet):
def __init__(self, root, type):
super(Scale, self).__init__()
...
or
NoteSet.__init__(self)
if you have an old-style class.
Diez
More information about the Python-list
mailing list