Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中修改不可变类型的_unew _u属性_Python - Fatal编程技术网

在Python中修改不可变类型的_unew _u属性

在Python中修改不可变类型的_unew _u属性,python,Python,我正在尝试修改“int”类型的行为 在Python中 上面说 “新建”为只读。 有办法吗 谢谢。您不能修改内置类型,但可以从中派生: class MyInt(int): def __new__(cls, *args): # whatever 你为什么要做这样的事?你希望完成什么?我正在写一个DSL,我正在研究如何使常量返回一个从内置int类型而不是内置int类型派生的值。用ruby你可以做到!请看这个问题:@user1275011:这实际上是Ruby的一个缺点:这

我正在尝试修改“int”类型的行为 在Python中

上面说

“新建”为只读。

有办法吗


谢谢。

您不能修改内置类型,但可以从中派生:

 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。