|
|
1
71
在Java中有一个变量
但以下内容甚至无法编译:
所以你的问题是关于
我的建议是,不要担心在语言级别强制执行非变异,只需专注于确保您不会编写任何在分配这些对象后对其进行变异的代码。 |
|
|
2
70
没有
但是,要创建类实例的只读字段,可以使用 property 编辑 :也许你想要这样的东西:
|
|
3
42
Python 3.8
PEP 591
)加上
请注意,与其他类型提示一样,这些提示并不阻止您重写类型,但它们确实有助于linters或IDEs警告您错误的类型用法。 |
|
|
4
9
这很笨拙,但它会在运行时检测设计问题。 |
|
|
5
7
我想,您可以通过对模型的相关部分使用元组或命名元组来解决这一问题,它们本质上是不可变的。当然,这对于模型中必须可变的任何部分都没有帮助。 |
|
|
6
6
Python没有“final”的等价物。它也没有“public”和“protected”,除了命名约定之外。这不是“束缚和纪律”。 |
|
|
7
6
您可以通过 descriptor protocol
|
|
|
8
5
截至2019年和
PEP 591
,Python有一个
|
|
|
9
3
http://code.activestate.com/recipes/576527/ 定义一个冻结函数,尽管它不能完美地工作。
|
|
|
10
1
Python确实没有最终的类型,它有不可变的类型,比如元组,但这是另外一回事。 这里的一些其他答案使类充满伪final变量,我更喜欢我的类只有几个final类型,因此我建议使用描述符创建final类型:
如果您这样使用此类:
不幸的是,与WriteOnCeradAnwhere答案一样,您仍然可以设置类变量。
|
|
11
0
虽然这是一个老问题,但我想我会添加另一个潜在选项:您也可以使用
如上所述,如果
|