我想在python类中定义的函数和外部定义的函数之间共享一个变量值。在下面的代码中,当调用internalCompute()函数时,自我数据已更新。如何在类外部(即报表函数内部)定义的函数中访问此更新的数据值? 注意: 我希望尽可能避免使用全局变量。
class Compute(object):
def __init__(self):
self.data = 0
def internalCompute(self):
self.data = 5
def externalCompute():
q = Compute()
q.internalCompute()
def report():
# access the updated variable self.data from Compute class
print "You entered report"
externalCompute()
report()
避免使用magic globals是个好主意,但是您的
report()
函数必须有一些方法来知道应该在哪里查找。如果可以将执行计算的对象传递给它,即q
,它可以简单地打印出q.data
。如果不是,那么您可以安排q
将其数据保存在类本身中显然这意味着类只能实例化一次,因此我将使用第一个选项。你知道吗除非在某个地方实例化类,否则不能这样做。 当前在您的实现中,您将在此处实例化Compute类:
但是一旦函数完成q就会超出范围并被销毁,因此您将丢失类包含的所有信息。为了做你想做的事情,Compute类必须被实例化为不是函数的本地类(或者你的函数需要返回Compute类的实例以保持它的状态)
通常,如果您的python文件是这样的,那么您可以使用一个“main”来实现:
实际上,您可以通过
q.data
访问数据,您只需返回它。你知道吗更改代码以反映这一事实:
如果你不喜欢这种方法,你只有几个其他的选择:
相关问题 更多 >
编程相关推荐