在Python中修改不可变类型的_unew _u属性
我正在尝试修改“int”类型的行为 在Python中 上面说在Python中修改不可变类型的_unew _u属性,python,Python,我正在尝试修改“int”类型的行为 在Python中 上面说 “新建”为只读。 有办法吗 谢谢。您不能修改内置类型,但可以从中派生: class MyInt(int): def __new__(cls, *args): # whatever 你为什么要做这样的事?你希望完成什么?我正在写一个DSL,我正在研究如何使常量返回一个从内置int类型而不是内置int类型派生的值。用ruby你可以做到!请看这个问题:@user1275011:这实际上是Ruby的一个缺点:这
“新建”为只读。
有办法吗
谢谢。您不能修改内置类型,但可以从中派生:
class MyInt(int):
def __new__(cls, *args):
# whatever
你为什么要做这样的事?你希望完成什么?我正在写一个DSL,我正在研究如何使常量返回一个从内置int类型而不是内置int类型派生的值。用ruby你可以做到!请看这个问题:@user1275011:这实际上是Ruby的一个缺点:这样做会影响所有的库和模块,所以你甚至不能再使用标准库了。Python中的一个类似问题是,您可以覆盖内置代码,例如,
import\uuuuuuuuuuuuuuu__builtin_uu;.len=lambda x:42可能会破坏大多数标准库。当然你不会做这样的胡说八道,但人们可能会被诱惑去做类似于\uuuu builtin\uuuu.open=io.open
的事情,这在某些情况下可能会导致微妙的破坏。如果这些事情在一开始是不可能的,那就更好了。我理解,但这里的问题是关于语法糖。客户机请求将常量(53)去掉为53。无论发生什么,我都要实现这个目标。如果你在做一个DSL,而不是一个库,那么你就要解析输入。因此,当您从输入中解析整数文本时,您只需创建任何其他类型的实例即可。你说你想使用从内置int类型派生的东西,所以。。。按照公认答案中的建议,就这么做吧。:)除了你真的不需要为那个类实现\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。