有没有办法覆盖Python';什么是内置类?
我试图更改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(
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解释器/语法指定如何解释文本。根据语法,literal5
表示内置类int
的一个实例,除非更改CPython源代码,否则不能更改该实例。因此,创建特殊子类实例的唯一选择是显式地告诉Python构建它们。问题不是int
是一种基本类型,而是Python VM使用内置的int
作为int
文本的类型,并且没有简单的方法来更改它。在Python中是可能的,您可以导入ctypes模块来更改值,但这不是一件好事,可能会破坏其他内容