擅长:python、mysql、java
<p>python Discord频道上的其他人给出了另一个伟大的见解:</p>
<p>冻结的数据类可能通过其自身的setattr限制访问,您可以通过将其传递给对象来绕过setattr</p>
<p>命名元组是从实际元组而不是python中的实现派生的,因此它们可以“真正”不可变,但是如果您在接口中使用数据类(同样可以以更混乱的方式对元组进行处理),这是一个没有意义的点。
我建议使用NamedTuple,而不是在NamedTuple上键入,因为它提供了作为一个适当类的可读性,但是如果您需要dataclass,那么冻结的类就可以了。NamedTuple实际上不是一个typehint,但在类定义中与它们一起工作,就像dataclasses一样,与类构造函数相比,它的定义更简洁</p>
<p>我认为在纯python中并没有限制所有访问的方法,因为您可以调用对象的方法</p>
<p>在元组上赋值将涉及到在c级别与(c)python交互,但这在某种意义上是相同的,因为它不是它的预期接口</p>
<p>Python总体上不太重视安全性,如果不应该做一些事情,那么如果用户做了,那就是用户的问题</p>