所谓的反射,就是通过字符串去访问类或对象成员,比如如果一个Student类有一个name对象属性,那么就可以通过一个"name"字符串去访问student对象的name属性
如python可以通过hasattr()函数来获取一个对象是否有某个属性
>>> class Student:
def __init__(self,name,age):
self.name = name
self.age = age
>>> s = Student("xiaobing",22)
>>> print s.name
xiaobing
>>> print s.age
22
>>> hasattr(s,"name")
True
>>> hasattr(s,"sex")
False
>>>
可以通过getattr()函数来获取对象的某个属性的值
>>> getattr(s,"name")
'xiaobing'
>>> getattr(s,"age")
22
可以通过setattr()函数去设置对象的属性的值
>>> setattr(s,"name","xiaoming")
>>> s.name
'xiaoming'
>>>
可以通过dir()函数获取对象拥有哪些成员
>>> dir(s)
['__doc__', '__init__', '__module__', 'age', 'name']
>>>
当然,类的函数也差不多,因为在python中类的函数和属性是同等地位的