On Wed, Feb 22, 2017 at 10:25 PM, boB Stepp <robertvst...@gmail.com> wrote: > I am trying to wrap my head around the mechanics of inheritance in > Python 3. I thought that all attributes of a superclass were > accessible to an instance of a subclass. But when I try the > following: > > py3: class A: > ... def __init__(self): > ... self.aa = 'class A' > ... > py3: class B(A): > ... def __init__(self): > ... self.bb = 'class B' > ... > py3: a = A() > py3: b = B() > py3: b.aa > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > AttributeError: 'B' object has no attribute 'aa' > > I am unsuccessful...
I have partially answered my own question, but I am not sure I understand the mechanics yet. Apparently I must explicitly assign class A's attribute, aa, to an instance of class B as follows: py3: class B(A): ... def __init__(self): ... self.aa = super().aa ... self.bb = 'class B' ... py3: b = B() py3: b.aa 'class A' I was expecting that all of A's methods and attributes would seamlessly be available to any instance of class B, but apparently this is wrong-headed on my part. Instead, it looks like I need to explicitly attach A's methods and attributes to B's instances via B's self. I will continue to mull this over. -- boB _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor