类中的特殊方法
""" __init__ 构造方法, 类()自动执行 __del__ 析构方法,对象在被销毁时执行的方法 __call__ 对象() 类()() 自动执行 __int__ int(对象) __str__ str() """ class FOO: def __init__(self): self.name = "aaa" print("init") def __call__(self, *args, **kwargs): return self.name def __int__(self): return 123 def __str__(self): return "abc" obj = FOO() print(obj()) # FOO()() print(int(obj)) print(str(obj)) print(obj) # print(str(obj)) print("========================================") """ __dict__ # 将对象中封装的所有内容通过字典的形式返回 __getitem__ # 将对象通过(索引或切片)的方式去查询 __setitem__ # 将对象通过索引去添加值 __delitem__ # 将对象通过索引去删除值 """ class Index: def __init__(self, name, age): self.name = name self.age = age def __getitem__(self, item): if type(item) == slice: print("这是切片") print(item.start, item.step, item.stop) else: print("这是取值") print(item) def __setitem__(self, key, value): print(key, value) def __delitem__(self, key): print(key) obj_index = Index("aaa", 18) print(obj_index.__dict__) obj_index[10] obj_index[10:11:2] obj_index[20] = 123 del obj_index[99] print("========================================") """ __iter__ # 如果类中有 __iter__ 方法,对象就是可迭代对象 # 对象.__iter__() 的返回值为: 迭代器 # for 循环,执行迭代器时用next() # for 循环,执行可迭代对象先执行对象.__iter__(),然后在执行迭代器,next # 1、执行li对象的类F类中的 __iter__方法,并获取其返回值 # 2、循环上一步中返回的对象 """ class iter_obj: def __init__(self, name, age): self.name = name self.age = age def __iter__(self): return iter([self.name, self.age]) obj_i = iter_obj("aaa", 18) for i in obj_i: print(i)