Inheritance and inner classes in Python?

后端 未结 3 1352

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

3条回答
  •  春和景丽
    2021-02-04 04:11

    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:

    1. yay attribute that has value True inherited from A.
    2. nay attribute that has value False.
    3. Foo attribute that has class object.

    Class methods are also attributes that have callable objects as values.

提交回复
热议问题