在方法中返回后覆盖 class 属性
Overwriting a class attribute after returning it in method
我有一个 class 方法,它构造一个 numpy
数组作为 class 属性。我希望在返回后将此属性设置为 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
Python 不会在赋值时复制对象,它只会传递对同一对象的引用。
return np.arange(1e9)
将只是 return 对创建数组的引用。创建任何包含它的新变量,如 var = np.arange(1e9)
,只会将数组的引用分配给变量。
如果对您有帮助,欢迎您visualize。
我有一个 class 方法,它构造一个 numpy
数组作为 class 属性。我希望在返回后将此属性设置为 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
Python 不会在赋值时复制对象,它只会传递对同一对象的引用。
return np.arange(1e9)
将只是 return 对创建数组的引用。创建任何包含它的新变量,如 var = np.arange(1e9)
,只会将数组的引用分配给变量。
如果对您有帮助,欢迎您visualize。