Python类变量是指针吗?

时间:2015-08-27 14:14:50

标签: python

我无法在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?

的指针

2 个答案:

答案 0 :(得分:4)

您将拥有大型列表的单个副本,其中包含两个引用:模块范围中的变量x和类范围内的self.mylist

答案 1 :(得分:0)

不,Python类变量不是指针。但由于largelist.mylist指向列表,largelist.mylist的行为将像指针一样。

这种情况发生在使用可变类型的Python中 - 例如 - listdict

如果larglist.mylist指向一个字符串,那么行为将完全不同,因为str不可变的类型它可以'变异。

See this section of Python docs了解更多信息