首页 > 解决方案 > 为什么我在子类上调用 super(...) 后属性没有继承?

问题描述

我正在尝试从子类中获取类属性。该属性被分配给超类初始化时的值。看:

class A:
    _b = None
    def __init__(self, a, b):
        self.a = a
        _b = b

class B(A):
    def __init__(self, a, b):
        super(B,self).__init__(a=a, b=b)
        print('Try to get _b value:', self._b)

B(4,5)

在 B 类初始化时,super(...)。init被调用,因此应该调用 A 类的构造函数。这导致 b 被分配给 A._b。但是,当我尝试从 B 类获取 self._b 时,它似乎没有初始化 A,因为 self._b 等于 None。

标签: pythonpython-3.xoop

解决方案


A.__init__没有初始化self._b,它初始化了一个名为_b. 由于这是一个局部变量,它会在该函数返回后立即消失。


推荐阅读