class Foo(float):
...
C = Foo(1.23)
给定这样的class / obj定义,我有什么办法使C只读?如果对象C初始化后曾经调用C = ...
,我希望它引发错误。
class Foo(float):
...
C = Foo(1.23)
给定这样的class / obj定义,我有什么办法使C只读?如果对象C初始化后曾经调用C = ...
,我希望它引发错误。
不可能。您可以使Foo
对象不可变,但不能使对其引用的变量不可变。该对象不拥有该变量或对该变量具有任何控制权。
否。
无论您为C
分配什么,C
本身都不是您创建的任何类的实例。 C
是一个变量。对变量进行操作的操作,例如C = something_new
,除了减少引用计数外,它甚至不会查看您的对象。您可以定义对象上的操作的行为方式,但是不能重新定义变量本身的语义。