【发布时间】:2022-01-26 12:15:27
【问题描述】:
我有一个类方法,它将
numpy
数组构造为类属性。我希望此属性在返回后设置为
None
。我使用的是属性而不是变量,因为创建数组是以并行方式完成的。这些数组可能非常大,所以我想避免将它放在内存中两次。最好的方法是什么?
import numpy as np
class foo:
def __init__(self):
self.values = None
def bar(self):
self.values = np.arange(1e9) # Large array
return self.values
self.values = None # To be set to None after returning
-
values = self.values
self.values = None
return values
?您是否认为values = self.values
复制了数组?因为事实并非如此。 -
更不用说 self.values = None 在返回后它永远不会被执行。 return 停止函数的执行设置类属性的意义是什么,然后在同一个函数中返回它,然后将其设置回 None 无论如何。如果你想要的只是一个大数组,你可以直接返回 np.arrange(1e9) 而无需将其设置为属性。
-
@Axe319 谢谢!我在这里错过了显而易见的事情。如果您将其发布为答案,我会接受。
-
@RazvanBunga 我知道,我这样说只是为了说明我想做什么