让我们说我需要将传入的数据写入云上的数据集。 何时,何地以及是否需要我的代码中的数据集,取决于进来的数据。 我只想获得一次数据集的引用。 实现这一目标的最佳方法是什么?
在开始时初始化为全局变量,并通过全局变量
进行访问get_dataset()
这似乎是最简单的方法,但即使从不需要它也会初始化变量。
第一次需要数据集时参考,保存在全局变量中,使用dataset = None
def get_dataset():
global dataset
if dataset is none
dataset = #get dataset from internet
return dataset
方法访问
get_dataset()
第一次需要数据集时获取引用,另存为函数属性,使用def get_dataset():
if not hasattr(get_dataset, 'dataset'):
get_dataset.dataset = #get dataset from internet
return get_dataset.dataset
方法访问
cordova build --release android
任何其他方式
答案 0 :(得分:1)
您可能希望将服务调用数据包装到类
中class MyService():
dataset = None
def get_data(self):
if self.dataset = None:
self.dataset = get_my_data()
return self.dataset
然后在主体中实例化一次,并在需要的地方使用它。
if __name__="__main__":
data_service = MyService()
data = data_service.get_data()
# or pass the service to whoever needs it
my_function_that_uses_data(data_service)
这清楚表明有一个dataset
变量可供使用。
此外,使用对象和类使得在大型项目中更加清晰,因为功能应该从类名和方法中不言自明。
请注意,您也可以轻松地将其作为通用服务,将其传递给初始化中的数据(如url?),以便可以在不同的端点重复使用。
与您的选项相比,对应的是,如果您需要(或错误地),您可以多次实例化同一个类,在这种情况下,将为每个实例提取和存储数据。
答案 1 :(得分:0)
我总是发现这样做的方法是你说过的第一号方法。对于你想要做的事情,这将是你最好的方法。