python自省
在计算机编程中,自省是指:检查某些事物以确定它是什么、它知道什么,它能做什么
1.hasattr(obj, attr):
用于检查obj是否有一个名为attr的属性,返回一个布尔值。
2.getattr(obj, attr):
返回obj中名为attr的属性的值。getattr(obj, attr)相当于obj.attr
3.setattr(obj, attr, val):
将给obj的名为attr的属性赋值为val。例如如果attr为’name’,则相当于obj.name= val
4.dir([object]) #参数说明:object -- 对象、变量、类型
调用这个方法将返回参数obj的属性和方法列表,obj的默认值是当前的模块对象。
当你想要对某个对象的属性、方法,进行操作但是记不清它的名字,甚至都不确定它是否存在的时候,python提供的自省功能就派上用场了。
测试代码如下:
# class MyClass:
# def __init__(self, name):
# self.name = name
#
# def instance_method(self):
# print(self, '调用了方法')
#
# obj = MyClass('Jack')
#
# if hasattr(obj,'name'):
# setattr(obj,'name','jack')
# print(obj.name)
# print(getattr(obj,'name'))
#
#
# if hasattr(obj,'instance_method'):
# getattr(obj,'instance_method')()
# obj.instance_method()
#
# print(dir(obj)) #可以查看对象内的所有属性和方法