Python 为什么属性没有';在我调用子类上的super(…)之后是否继承了?

Python 为什么属性没有';在我调用子类上的super(…)之后是否继承了?,python,python-3.x,oop,Python,Python 3.x,Oop,我试图从子类中获取一个class属性。该属性被指定给超类初始化时的值。见: 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:', sel

我试图从子类中获取一个class属性。该属性被指定给超类初始化时的值。见:

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,因此应该调用类的构造函数。这将导致b被分配给A.。_b。
然而,当我试图从类b中获取self.\u b时,它似乎没有初始化A,因为self.\u b等于零。

您的
A.\u init\u\u
没有初始化
self.\u b
,它初始化了一个名为
\u b
的局部变量。由于这是一个局部变量,它会在函数返回时立即消失。

…因此将其更改为
a。_b=b
@Sam Stafford非常感谢。忘记了函数默认返回None,但是现在当你说我记得的时候。