In the following code class B
has inherited yay
attribute from class A
, I expected this. I\'d also expect that inner class B.Foo
The reason why B.Foo.alice
gave you an error is because there's no connection between Foo
attribute of class A
and Foo
attribute of class B
.
In B
, attribute Foo
has a class object value that completely replaces class object value inherited from A
.
This should fix it:
class B(A):
nay = False
class Foo(A.Foo):
bob = False
In general, it helps, at least for me, to think of a class body contents as a sequence of attributes with certain assigned values.
In case of class B
, we have:
yay
attribute that has value True
inherited from A.nay
attribute that has value False
.Foo
attribute that has class object.Class methods are also attributes that have callable objects as values.