在方法中返回后覆盖 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