Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.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';什么是内置类?_Python_Python 3.6 - Fatal编程技术网

有没有办法覆盖Python';什么是内置类?

有没有办法覆盖Python';什么是内置类?,python,python-3.6,Python,Python 3.6,我试图更改python的int类的行为,但我不确定是否可以使用纯python来完成。以下是我迄今为止所做的尝试: import builtins class int_new(builtins.int): def __eq__(self, other): return True int = int_new print(5 == 6) # the result is False, but I'm anticipating True 应将最后一行替换为: print(int(

我试图更改python的
int
类的行为,但我不确定是否可以使用纯python来完成。以下是我迄今为止所做的尝试:

import builtins
class int_new(builtins.int):
    def __eq__(self, other):
        return True
int = int_new
print(5 == 6) # the result is False, but I'm anticipating True

应将最后一行替换为:

print(int(5) == int(6))

强制/要求Python将新类用于整数

一年后,我终于明白了我的疑惑。当我学习Python时,我没有接触到什么是基元类型的概念。在学习C++之后,我意识到我实际上在想是否可以用其他自定义类型替换基元类型。答案显然是否定的。

如果不重新编译Python,完全不可能复制的可能性-从数值文本创建
int
对象的级别远远低于您可以覆盖的级别。此外,在程序开始运行之前,5和6(以及数百个其他数字)已经被创建为缓存的int对象?你的用例是什么?我认为这失去了重点。如果是这样,我可以使用任意类,而不必包含
int=int\u new
Python解释器/语法指定如何解释文本。根据语法,literal
5
表示内置类
int
的一个实例,除非更改CPython源代码,否则不能更改该实例。因此,创建特殊子类实例的唯一选择是显式地告诉Python构建它们。问题不是
int
是一种基本类型,而是Python VM使用内置的
int
作为
int
文本的类型,并且没有简单的方法来更改它。在Python中是可能的,您可以导入ctypes模块来更改值,但这不是一件好事,可能会破坏其他内容