gpt4 book ai didi

java - `final` 关键字等效于 Python 中的变量?

转载 作者:IT老高 更新时间:2023-10-28 20:32:55 34 4
gpt4 key购买 nike

我在 Python 中找不到与 Java 的 final 等效的文档,有这样的东西吗?

我正在创建一个对象的快照(用于在任何失败时进行恢复);一旦分配了这个备份变量,就不应对其进行修改——Python 中类似 final 的特性会很好。

最佳答案

Java 中的变量是 final 基本上意味着一旦您分配给一个变量,您就不能重新分配该变量以指向另一个对象。这实际上并不意味着该对象不能被修改。例如,以下 Java 代码运行良好:

public final List<String> messages = new LinkedList<String>();

public void addMessage()
{
messages.add("Hello World!"); // this mutates the messages list
}

但以下内容甚至无法编译:

public final List<String> messages = new LinkedList<String>();

public void changeMessages()
{
messages = new ArrayList<String>(); // can't change a final variable
}

所以你的问题是关于 Python 中是否存在 final 。它没有。

但是,Python 确实具有不可变的数据结构。例如,虽然您可以改变 list,但不能改变 tuple。您可以改变 set 但不能改变 frozenset 等。

我的建议是不要担心在语言级别强制执行非变异,而只需专注于确保您不会编写任何代码在分配这些对象后对其进行变异。

关于java - `final` 关键字等效于 Python 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/802578/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com