基本上我希望能够做到这样的事情:
a = Integer(1)
a += 1
print a
Run Code Online (Sandbox Code Playgroud)
当然,打印第二个结果.我需要创建哪些方法才能在我的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
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__以允许在整数之间添加.