在Python中建立我自己的“整數”物件

基本上我希望能夠做到這樣的事情:

a = Integer(1)
a += 1
print a

當然,列印第二個結果.我需要建立哪些方法才能在我的Integer類中獲得此行為?

免責宣告:我不打算將其用於“真實”,只是好奇.

這是一個簡單而不完整的例子.檢視方法__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

然後

n = Integer()
print n
m = Integer(7)
m+=5
print m

編輯修復了__repr__並添加了__iadd__.感謝@Keith指出問題.

編輯修復__add__以允許在整數之間新增.

翻譯自:https://stackoverflow.com/questions/5604713/creating-my-own-integer-object-in-python