更新 python class 中的变量
Updating variables in a python class
首先:我在 class 中定义一个更新函数是否重要,或者我是否可以只执行以下操作:
class foo(object):
def __init__(self):
self.a = 1
def f(self,):
self.a = self.a**2 - self.a - 6
return self.a
其次:创建虚拟变量、执行操作并使用它来更新我的 class 变量是否更有益(节省内存、运行时间等),还是实际上无关紧要?
class foo(object):
def __init__(self):
self.a = 1
def f(self):
a = self.a
a = a**2-a-6
self.a = a
return self.a
在这个微不足道的例子中,我知道这无关紧要,但是随着函数执行更多的操作,它会有什么影响吗?
我无法回答你的第一个问题,因为我根本不知道你在问什么。我不知道您所说的 "an update function" 是什么意思,也不知道它与您显示的代码有何不同。
但是,对于第二个,使用局部变量比使用属性稍微快一些。在大多数情况下这无关紧要,但如果您有一些代码需要尽可能快,您确实可以采用将属性值移动到局部变量的方法,在那里处理它,然后再放回去在属性中。
正如 Knuth 所说,过早的优化是万恶之源,所以在确定这段代码会导致真正的性能问题之前不要这样做。
首先:我在 class 中定义一个更新函数是否重要,或者我是否可以只执行以下操作:
class foo(object):
def __init__(self):
self.a = 1
def f(self,):
self.a = self.a**2 - self.a - 6
return self.a
其次:创建虚拟变量、执行操作并使用它来更新我的 class 变量是否更有益(节省内存、运行时间等),还是实际上无关紧要?
class foo(object):
def __init__(self):
self.a = 1
def f(self):
a = self.a
a = a**2-a-6
self.a = a
return self.a
在这个微不足道的例子中,我知道这无关紧要,但是随着函数执行更多的操作,它会有什么影响吗?
我无法回答你的第一个问题,因为我根本不知道你在问什么。我不知道您所说的 "an update function" 是什么意思,也不知道它与您显示的代码有何不同。
但是,对于第二个,使用局部变量比使用属性稍微快一些。在大多数情况下这无关紧要,但如果您有一些代码需要尽可能快,您确实可以采用将属性值移动到局部变量的方法,在那里处理它,然后再放回去在属性中。
正如 Knuth 所说,过早的优化是万恶之源,所以在确定这段代码会导致真正的性能问题之前不要这样做。