我有一個嵌套的結構,它包含ints,並且想在結構上做print
或pprint
時用科學記數法顯示它們。
我的想法是添加創建我的int類重載的類,當打印將做我所需要的。做print(a)
在python中打印int的鉤子
EDIT2時
#!/usr/bin/python
class A(int):
def __str__(self, *args):
import ipdb; ipdb.set_trace()
def __unicode__(self, *args):
import ipbd; ipdb.set_trace()
def __repr__(self, *args):
import ipbd; ipdb.set_trace()
def __int__(self, *args):
import ipbd; ipdb.set_trace()
a = A()
a+=2
print(a)
斷點沒有得到所謂: 此代碼做什麼,我想:
但是我不能讓一個掛鉤,一個int的表示#!/usr/bin/python
from collections import defaultdict
from pprint import pprint
class A(int):
def __init__(self):
self._value = 0
# def __add__(self, other):
# self._value += other
# return self
def __iadd__(self, other):
self._value += other
return self
def __str__(self):
return "{:,}".format(self._value)
def __repr__(self):
return "{:,}".format(self._value)
a = defaultdict(lambda: defaultdict(A))
a[0][1]+=123456789
a[0][2]+=100000
pprint(a)
你沒有在你的方法中返回任何東西 –
'a + = 2' - 這是一個問題的來源:'+ =','+',''','*'的默認實現。 。返回新的'int'實例。您必須重寫'__add__','__mul__',...以返回正確的'A'實例 –
此外,請考慮使用繼承的代理/包裝器。在這種情況下通常會更好。 –