OOP:初始化方法问题

OOP: Init method questions

关于下面的代码我有两个问题。

  1. self.a=self.test1()a=self.test1() 有什么区别?一个是 class 字段,另一个是对象字段?
  2. 为什么我不能定义result = self.a+self.b?如何纠正?
class Test():
    def __init__(self):
        self.a=self.test1()
        a=self.test1()
        self.b=Test.test2()
    
    result = self.a+self.b    
    def test1(self):
        a=100
        return a
    @classmethod
    def test2(cls):
        b=200
        return b

    @staticmethod
    def test3():
        print("Testing3 is calling ")
        c=500
        return c

self.a = self.test1() 创建一个名为 a 的实例属性。可以从任何引用该对象的对象访问该属性。

a = self.test1() 定义了一个名为 a 的局部变量。一旦 __init__ returns.

就会超出范围

result = self.a + self.b 不起作用,因为它处于未定义 self 的上下文中。 self 只是实例方法第一个参数的(约定)名称。它没有在 class 语句本身的命名空间中定义。

self.a是这个class中的一个属性。它将在 Test() class 的整个函数中保持可访问性。然而,a = self.test1()__init__(self) 完成后消失,因为 a__init__(self).

的本地

对于result = self.a + self.b,我假设你想要一个名为result的变量在定义了self.aself.b之后计算?在那个缩进级别,通常不允许这样的语句(我可能是错的),通常这里会发生 属性 或 class 的声明。