Python——反射

反射

反射指的是通过字符串来操作属性


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
# e.g.
class Foo:
def __init__(self,name,age):
self.name = name
self.age = age

def tell_info(self):
print('%s:%s' %(self.name,self.age))

obj = Foo('ooc',18)

# hasattr
print(hasattr(obj,'name')) # True

# getattr
print(getattr(obj,'name')) # ooc

# setattr
setattr(obj,'gender','male') # 增加属性
print(obj.__dict__) # {'name': 'ooc', 'age': 18, 'sex': 'male'}

stattr(obj,'name','david') # 已存在属性就修改属性
print(obj.__dict__) # {'name': 'david', 'age': 18, 'sex': 'male'}

# delattr
delattr(obj,'name')
print(obj.__dict__) # {'age': 18, 'sex': 'male'}