Python 变量访问

Python Variable Access

class A:
    def __init__(self):
        self.i = 0
    def demo(self):
        self.a=1

class B(A):
    def __init__(self, j = 0):
        super().__init__()
        self.j = j
        print(self.i)
        self.demo()
    def demo(self):
        print(self.a)

def main():
    b = B()
    print(b.i)
    print(b.j)
main()

为什么我无法访问 self.a inside class b 用 self 给变量加上前缀。将使它成为一个实例变量 谢谢

这是因为实例变量b没有在A__init__内初始化

因为您覆盖了 B class 上的 demo 方法。
如果你想访问 self.a 将它添加到 A class 的 __init__ 方法或像这样调用父 demo 方法:

   def demo(self):
       super().demo()
       print(self.a)

当您为两个 类 都包含一个 demo 方法时,最 recently-defined 一个会掩盖其他。由于您在定义 A 之后但在调用 A 中的任何方法之前定义了 B,因此 demo 将尝试访问从未定义的变量。您应该在 A 中调用 demo(可能在 __init__ 中),或者将 B 中的 demo 的名称更改为唯一的名称,这样您就可以访问这两种方法(可能是最好的方法,因为它们做不同的事情而您想同时使用这两种方法)。

因为class A.demo()没有被执行:
class答: def init(self): self.i = 0 定义演示(自我): self.a=1

class B(A):
    def __init__(self, j = 0):
        super().__init__()
        self.j = j
        print(self.i)
        super().demo()
        self.demo()
    def demo(self):
        print(self.a)

def main():
    b = B()
    print(b.i)
    print(b.j)

main()