# 魔法方法 # 1.__init__(self,...):初始化对象的方法 class Person: def __init__(self, name): self.name = name person = Person("Alice") print(person.name) # 输出 "Alice" # 2.__str__(self):返回对象的字符串表示 class Person: def __init__(self, name): self.name = name def __str__(self): return f"Person:{self.name}" person = Person('Bob') # 输出 "Person: Bob" print(person) # 3.__len__(self):返回对象的长度 class MyList: def __init__(self, lst): self.lst = lst def __len__(self): return len(self.lst) my_list = MyList([1, 2, 3, 4, 5]) print(len(my_list)) # 输出5 # 4.__getitem__(self,index):获取对象的索引值 class MyList: def __init__(self, lst): self.lst = lst def __getitem__(self, index): return self.lst[index] my_list = MyList([1, 2, 3, 4, 5]) print(my_list[2]) # 输出3 # 5.__setitem__(self, index, value):设置对象的索引值 class MyList: def __init__(self,items): self.items = items def __setitem__(self, key, value): self.items[key] = value my_list = MyList([1,2,3,4,5]) my_list[2] = 10 print(my_list.items[2]) # 6. __iter__(self):返回一个迭代器对象 class MyList: def __init__(self, lst): self.lst = lst def __iter__(self): return iter(self.lst) my_list = MyList([1, 2, 3, 4, 5]) for num in my_list: print(num) # 依次输出 1, 2, 3, 4, 5 #7. __next__(self):返回迭代器的下一个值。 class MyList: def __init__(self, lst): self.lst = lst self.index = 0 def __iter__(self): return self def __next__(self): if self.index >= len(self.lst): raise StopIteration value = self.lst[self.index] self.index += 1 return value my_list = MyList([1, 2, 3, 4, 5]) for num in my_list: print(num) # 依次输出 1, 2, 3, 4, 5 # 8.__call__(self, ...):使对象可以像函数一样被调用 class Adder: def __call__(self, a, b): return a + b adder = Adder() result = adder(2,3) print(result) #输出 5 # 9.__eq__(self, other):检查两个对象是否相等 class Point: def __init__(self, x, y): self.x = x self.y = y def __eq__(self, other): return self.x == other.x and self.y == other.y p1 = Point(3, 4) p2 = Point(3, 4) print(p1 == p2) # 输出 True # 10.__del__(self):销毁对象时调用 class MyClass: def __del__(self): print("对象被销毁") obj = MyClass() # 创建对象 del obj # 销毁对象,输出 "对象被销毁"