反射的定义
根据字符串的形式去某个对象中操作成员
- 根据字符串的形式去某个对象中寻找成员
- 根据字符串的形式去某个对象中设置成员
- 根据字符串的形式去某个对象中删除成员
- 根据字符串的形式去某个对象中判断成员是否存在
反射相关函数
getattr(object,name,[default])
获取一个对象的属性或者方法,如果存在就打印出来,如果不存在就打印出默认值,默认值是可选的
注意:返回的对象方法,返回的是内存地址,如果需要执行这个方法,需要在后面加上括号’()’
>>> class test():
... name="xiaohua"
... def run(self):
... return "HelloWord"
...
>>> t=test()
>>> getattr(t, "name")
'xiaohua'
>>> getattr(t, "run")
<bound method test.run of <__main__.test instance at 0x0269C878>>
>>> func = getattr(t, "run")
>>> func()
'HelloWord'
>>> getattr(t, "age")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: test instance has no attribute 'age'
>>> getattr(t, "age","18")
'18'
setattr(object,name,value)
给对象的属性赋值,若属性不存在,就先创建在赋值
>>> class test():
... name="xiaohua"
... def run(self):
... return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "age")
False
>>> setattr(t, "age", "18")
>>> hasattr(t, "age")
True
>>>
delattr(object,name)
根据字符串的形式去某个对象中删除成员
>>> getattr(commons, "Name")
'ZhaiJunMing'
>>> delattr(commons, "Name")
>>> getattr(commons, "Name")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'commons' has no attribute 'Name'
hasattr(object,name)
根据字符串的形式去某个对象中判断成员是否存在
比如:判断一个对象里面是否有name属性或者name方法,返回bool值,有则True,否则False
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:531509025
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
>>> class test():
... name="xiaohua"
... def run(self):
... return "HelloWord"
...
>>> t=test()
>>> hasattr(t, "name")
True
>>> hasattr(t, "run")
True
>>>
|