在Java中有一个变量final是基本上意味着一旦你分配给一个变量,你不能重新分配该变量指向另一个对象。它实际上并不意味着对象不能被修改。例如,以下Java代码非常好地工作:
public final List messages = new LinkedList();
public void addMessage()
{
messages.add("Hello World!"); // this mutates the messages list
}
但下面甚至不会编译:
public final List messages = new LinkedList();
public void changeMessages()
{
messages = new ArrayList(); // can't change a final variable
}
所以你的问题是关于Python中是否存在final。它不是。
但是,Python有不可变的数据结构。例如,虽然你可以改变一个列表,你不能改变一个元组。你可以改变一个集合,而不是变形集等。
我的建议是,不必担心在语言级别强制执行非突变,而只是专注于确保您不要编写任何代码,在分配这些对象后分配这些对象。