B.name
is a class attribute, not an instance attribute. It shows up in B.__dict__
, but not in b = B(); b.__dict__
.
The distinction is obscured somewhat because when you access an attribute on an instance, the class dict is a fallback. So in the above example, b.name
will give you the value of B.name
.