内置方法
- isinstance(对象,类名) 谁是谁的实例
- issubclass(sub,super) 这个类是不是另一个类的子类
item系列
将类定制成像字典一样的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Foo: def __init__(self,name): self.name = name
def __getitem__(self, item): print('get item') self.__dict__ print(item) return self.__dict__.get(item)
def __setitem__(self, key,value): print('set item') print(key,value) self.__dict__[key] = value
def __delitem__(self, key): print('del item') print(key) del self.__dict__[key]
obj = Foo('hjx') print(obj.__dict__) # 属性名 print(obj['name']) # obj.name print(obj['namexxx'] ) # 不会报错
obj['sex'] = 'man' print(obj['sex'])
del obj['name'] print(obj.__dict__)
|
双下str双下
1 2 3 4 5 6 7 8 9 10 11
| class People: def __init__(self,name,age): self.name = name self.age = age
def __str__(self): return '<name:%s,age:%s>'%(self.name,self.age)
p = People('hjx',18)
print(p) # <name:hjx,age:18>
|
双下del双下
1 2 3 4 5 6
| f = open('aa.py',mode='w+') f.read() f.close() # 回收操作系统资源
# 此时f还存在不存在——存在 print(f) # <_io.TextIOWrapper name='aa.py' mode='w+' encoding='cp936'>
|
再看
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| class Open: def __init__(self,fileName): print('open file...') self.fileName = fileName
def __del__(self): print('del_____')
f2 = Open('aa.txt') # del f2 print('-----main------') ''' open file... -----main------ del_____ '''
--------------------- f3 = Open('aa.txt') del f3 print('-----main------')
''' open file... del_____ -----main------ '''
|
执行结果:你不调用 del程序会在执行结束后自动帮你调用 ,如果你手动调用了,就不帮你调用了