Class method: function(self) 和 function 的区别在哪里?
Class method: Where is the difference between function(self) and function?
有点懵
以下两个 python 代码片段都 return 相同的值:
第一个:
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function():
y = "This is the inner function"
return print(y)
value_from_inner_function = inner_function()
return print(self.i)
testClass = Test()
testClass.test_function()
第二个:
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function(self):
self.y = "This is the inner function"
return print(self.y)
value_from_inner_function = inner_function(self)
return print(self.i)
testClass = Test()
testClass.test_function()
两个片段return。
This is the inner function
This is the outer function
我想知道,这两种情况应该使用哪一种?
我的假设是,安装内部函数仅供外部 class 方法使用(在本例中为 outer_function
)。
所以不需要实例化,因为外部class方法可以访问它。
因此,我猜第一个片段是“更”正确的片段。是这样吗?
如果这是真的,片段 1 和片段 2 之间是否存在任何值得注意的“性能”差异?
在第一个版本中,y
是inner_function()
的局部变量。它在函数 returns.
时消失
在第二个版本中。 self.y
是对象的一个属性。分配它会对对象进行永久更改,因此您可以在内部函数 returns 之后引用它。例如
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function(self):
self.y = "This is the inner function"
return print(self.y)
value_from_inner_function = inner_function(self)
return print(self.i)
testClass = Test()
testClass.test_function()
print(testClass.y)
有点懵
以下两个 python 代码片段都 return 相同的值:
第一个:
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function():
y = "This is the inner function"
return print(y)
value_from_inner_function = inner_function()
return print(self.i)
testClass = Test()
testClass.test_function()
第二个:
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function(self):
self.y = "This is the inner function"
return print(self.y)
value_from_inner_function = inner_function(self)
return print(self.i)
testClass = Test()
testClass.test_function()
两个片段return。
This is the inner function
This is the outer function
我想知道,这两种情况应该使用哪一种?
我的假设是,安装内部函数仅供外部 class 方法使用(在本例中为 outer_function
)。
所以不需要实例化,因为外部class方法可以访问它。
因此,我猜第一个片段是“更”正确的片段。是这样吗?
如果这是真的,片段 1 和片段 2 之间是否存在任何值得注意的“性能”差异?
在第一个版本中,y
是inner_function()
的局部变量。它在函数 returns.
在第二个版本中。 self.y
是对象的一个属性。分配它会对对象进行永久更改,因此您可以在内部函数 returns 之后引用它。例如
class Test():
def __init__(self):
None
def outer_function(self):
self.i = "This is the outer function"
def inner_function(self):
self.y = "This is the inner function"
return print(self.y)
value_from_inner_function = inner_function(self)
return print(self.i)
testClass = Test()
testClass.test_function()
print(testClass.y)