在Python中创建我自己的"整数"对象

Joh*_*son 7 python object

基本上我希望能够做到这样的事情:

a = Integer(1)
a += 1
print a
Run Code Online (Sandbox Code Playgroud)

当然,打印第二个结果.我需要创建哪些方法才能在我的Integer类中获得此行为?

免责声明:我不打算将其用于"真实",只是好奇.

jua*_*nza 9

这是一个简单而不完整的例子.看看方法__sub__,__div__等等.

class Integer(object):
    def __init__(self, val=0):
        self._val = int(val)
    def __add__(self, val):
        if isinstance(val, Integer):
            return Integer(self._val + val._val)
        return self._val + val
    def __iadd__(self, val):
        self._val += val
        return self
    def __str__(self):
        return str(self._val)
    def __repr__(self):
        return 'Integer(%s)' % self._val
Run Code Online (Sandbox Code Playgroud)

然后

n = Integer()
print n
m = Integer(7)
m+=5
print m
Run Code Online (Sandbox Code Playgroud)

编辑修复__repr__并添加__iadd__.感谢@Keith指出问题. 编辑已修复__add__以允许在整数之间添加.


nco*_*lan 7

首先,快速查看参考手册中有关模拟数字类型的文档.

(不要过于拘泥于此 - 只是为了让您熟悉Python中基于算术运算的方法)

然后参考numbers模块的文档,其中包括与模拟不同类型的数字最相关的所有抽象基类(例如,numbers.Integral对于自定义整数).