1 '''
2 __len__() 是一个魔法方法,用于返回对象的长度或元素个数。
3 它通常被用于支持内置函数 len() 的调用,并在自定义的容器类中实现。
4 最佳实践:
5 1. 在容器类中实现 __len__() 方法可以提供对象的长度信息,使其能够像内置容器(如列表、字典等)一样使用。
6 2. __len__() 方法应该返回一个整数,表示容器中的元素个数。
7 3. 如果对象不支持计算长度或没有明确的概念来表示长度,则不需要实现 __len__() 方法。
8 '''
9
10 '''
11 定义了一个名为 MyList 的自定义容器类,它包含一个 data 属性用于存储数据。
12 实现了 add() 方法来向容器中添加元素,并重载了 __len__() 方法以返回容器中元素的数量。
13 当调用 len(my_list) 时,实际上会自动调用 my_list.__len__() 方法,并输出其返回的结果。
14 '''
15 class MyList:
16 def __init__(self):
17 self.data = []
18
19 def add(self, item):
20 self.data.append(item)
21
22 def __len__(self):
23 return len(self.data)
24
25
26 my_list = MyList()
27 my_list.add(1)
28 my_list.add(2)
29 my_list.add(3)
30 # 通过实现 __len__() 方法,我们使得 MyList 类的对象可以像内置的列表一样使用 len() 函数来获取其长度。
31 print(len(my_list)) # 输出:3
返回对象的长度或元素个数,通过调用len()方法,自动调用。