1 # 01析构方法 __del__ 2 # 构造方法 申请一个空间 3 # 析构方法 释放一个空间 4 # 垃圾回收机制 5 class A: 6 def __del__(self): # 析构方法 7 print('析构方法') 8 9 10 a = A() 11 del a # 对象的删除 12 13 14 15 class File(): 16 def __init__(self, file_path): 17 self.f = open(file_path) 18 self.name = 'alex' 19 20 def read(self): 21 self.f.read(1024) 22 23 def __del__(self): 24 self.f.close() 25 26 27 f = File('文件名') 28 f.read() 29 """ 30 31 32 # 02 item系列 和对象使用中括号访问值有联系 33 # d = {'k': 'v'} 34 # print(d) 35 # print(d['k']) 36 37 # 在内置的模块中, 38 # 有一些特殊的方法,要求对象必须实现__getitem__/__setitem__才能使用 39 class B: 40 def __init__(self, lst): 41 self.lst = lst 42 43 def __getitem__(self, item): 44 return getattr(self, item) 45 46 def __setitem__(self, key, value): 47 setattr(self, key, value) 48 49 def __delitem__(self, key): 50 delattr(self, key) 51 52 53 b = B(['111', '222', '333', '444']) 54 b['k1'] = 'v1' # def __setitem__(self, key, value): 55 56 print(b['k1']) # def __getitem__(self, item): 57 58 59 # del b['k1'] # def __delitem__(self, key): 60 # 61 # print(b['k1']) 62 63 class B: 64 def __init__(self, lst): 65 self.lst = lst 66 67 def __getitem__(self, item): 68 return self.lst[item] 69 70 def __setitem__(self, key, value): 71 self.lst[key] = value 72 73 def __delitem__(self, key): 74 self.lst.pop(key) 75 76 77 b = B(['111', '222', '333', '444']) 78 print(b.lst[0]) 79 print(b[0]) 80 b[3] = 'alex' 81 print(b.lst) 82 del b[2] 83 print(b.lst) 84 # lis = ['黑桃', '红心', '梅花', '方片'] 85 # v = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'] 86 # for i in lis: 87 # for j in range(len(v)): 88 # dic[j] = v[i] 89 # print(dic) 90 91 # print(dic) 92 dic = {} 93 k1 = ['a', 'b', 'c'] 94 k2 = [4, 5, 6] 95 96 for i in range(len(k1)): 97 dic[k1[i]] = k2[i] 98 print(dic) 99 lst = [] 100 lis = ['黑桃', '红心', '梅花', '方片'] 101 v = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'] 102 for i in lis: 103 for n in v: 104 lst.append((i, n)) 105 print(lst)