len如何在Python上工作?len如何工作?
请看下面的例子:
class INT(int):
pass
class STR(str):
def __len__(self):
return INT(42)
q = STR('how').__len__()
print q, type(q)
q = len(STR('how'))
print q, type(q)
输出是:
42 <class '__main__.INT'>
42 <type 'int'>
我如何处理这么LEN返回一个int实例?
答案表明,唯一的解决办法是压倒len个
这是我的另一种实现。这看起来不是很有害。
original_len = len
def len(o):
l = o.__len__()
if isinstance(l, int):
return l
original_len(o)
不想这样做。你为什么认为这是一个好主意? – ironfroggy 2010-01-31 15:11:59
我同意ironfroggy。你究竟在努力完成什么?你的int子类与int有什么不同? – mzz 2010-01-31 15:14:32
当然,例子中的INT类只是一个例子。 – 2010-02-01 03:43:57