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 33
| 在python中实现反射非常简单: 1 在程序运行过程中,如果我们获取一个不知道存有何种属性的对象,若想操作其内部属性,可以先通过内置函数dir来获取任意一个类或者对象的属性列表,列表中全为字符串格式 >>> class People: ... def __init__(self,name,age,gender): ... self.name=name ... self.age=age ... self.gender=gender ... >>> obj=People('egon',18,'male') >>> dir(obj) [......,'age', 'gender', 'name']
2 接下来就是想办法通过字符串来操作对象的属性了,这就涉及到内置函数hasattr、gatattr、setattr、delattr的使用了 -- python中一切皆对象,类和对象都可以被这四个函数操作,用法一样 class Teacher: def __init__(self,full_name): self.full_name =full_name
t=Teacher('Egon Lin')
hasattr(t,'full_name')
getattr(t,'full_name',None)
setattr(t,'age',18)
delattr(t,'age')
|