Python之路,Day21 = 反射、面向对象内置方法:如__str__、面向对象的软件开发
几个内置查看的方法使用
.__base__ 查看类的继承结构
.mro() 对象找属性的顺序存在里面
-----课程内容-----
---反射
hasattr(object, name)
getattr(object, name, default)
defult 找不到的时候,返回default
setattr(object, key, values)
delattr(object, key)
---面向对象内置方法
isinstance(obj, type) # 查看是不是它的实例issubclass(child, parent) # 查看是否为子类
__str__
打印对象的时候会触发 object.__str__() 这个方法,返回值必须是字符串
如 print(object)
__del__
对象销毁的时候执行这个函数下的内容,可以用来处理一些对象小时候的善后工作
__getitem__
f['name']
__setitem__
f['name'] = 'zhang'
__delitem__
del f['name']
1 class Foo: 2 def __init__(self,name,age,sex): 3 self.name=name 4 self.age=age 5 self.sex=sex 6 def __getitem__(self, item): 7 # print(self,item,type(item)) 8 # return getattr(self,item) 9 return self.__dict__[item] 10 def __setitem__(self, key, value): 11 # setattr(self,key,value) 12 self.__dict__[key]=value 13 14 def __delitem__(self, key): 15 # delattr(self,key) 16 self.__dict__.pop(key) 17 18 def __len__(self): 19 return 10 20 f=Foo('egon',18,'male') 21 # print(f.name) #f['name'] 22 # print(f.age) #f['age'] 23 # print(f.sex) #f['sex'] 24 25 # print(f['name']) 26 27 # f['name']='egon_nb' 28 # print(f.__dict__) 29 # del f['name'] 30 # print(f.__dict__) 31 32 print(len(f))