我将实现一些容器对象。
class A:
def __init__(self, L):
self.L = list(L)
def __len__(self):
return len(self.L)
class B:
def __init__(self, L):
self.L = list(L)
self.__len__ = self.L.__len__
在第一种情况下,同时len()
工作.__len__()
>>> a = A(range(10))
>>> a.__len__()
10
>>> len(a)
10
但在第二种情况下,我得到错误len()
。
>>> b = B(range(10))
>>> b.__len__()
10
>>> len(b)
Traceback (most recent call last):
File "<pyshell#93>", line 1, in <module>
len(b)
TypeError: object of type 'B' has no len()
- 为什么
len()
在第二种情况下不起作用,而.__len__()
被定义并正常工作? - 通常可以将一些方法从一个对象分配给另一个对象吗?就像我对
self.L.__len__()
.