OOP:初始化方法问题
OOP: Init method questions
关于下面的代码我有两个问题。
self.a=self.test1()
和 a=self.test1()
有什么区别?一个是 class 字段,另一个是对象字段?
- 为什么我不能定义
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.a
和self.b
之后计算?在那个缩进级别,通常不允许这样的语句(我可能是错的),通常这里会发生 属性 或 class 的声明。
关于下面的代码我有两个问题。
self.a=self.test1()
和a=self.test1()
有什么区别?一个是 class 字段,另一个是对象字段?- 为什么我不能定义
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.a
和self.b
之后计算?在那个缩进级别,通常不允许这样的语句(我可能是错的),通常这里会发生 属性 或 class 的声明。