我无法在Python文档页面(https://docs.python.org/2/tutorial/classes.html)上找到答案。我需要知道这一点,因为我正在处理大型对象,这会影响将大对象作为类变量是否可行。例如:
class LargeList:
def __init__(self, mylist):
self.mylist = mylist
if __name__ == '__main__':
x = range(0, 1000000000)
largelist = LargeList(x)
此对象是否存储指向x?
的指针答案 0 :(得分:4)
您将拥有大型列表的单个副本,其中包含两个引用:模块范围中的变量x
和类范围内的self.mylist
。
答案 1 :(得分:0)
不,Python类变量不是指针。但由于largelist.mylist
指向列表,largelist.mylist
的行为将像指针一样。
这种情况发生在使用可变类型的Python中 - 例如 - list
,dict
。
如果larglist.mylist
指向一个字符串,那么行为将完全不同,因为str
是不可变的类型即它可以'变异。