面向对象~~反射, 判断函数和方法
python面向对象中的反射:通过字符串的形式操作对象相关的属性。
一 四种反射:
1. 对对象的反射
class A:
country = '中国'
def __init__(self,name,age):
self.name = name
self.age = age
def func(self):
print('我好帅')
obj = A('海狗',18)
print(hasattr(obj,'country')) # 查
print(getattr(obj,'country')) # 找
getattr(obj,'func')()
print(getattr(obj,'sex','找不到')) # 找不到返回返回值
setattr(obj,'sex','男') # 添加
print(obj.__dict__)
delattr(obj,'name') #删除
print(obj.__dict__)
2. 对类的反射
3. 当前模块的反射
import sys
def s1():
print 's1'
this_module = sys.modules[__name__]
hasattr(this_module, 's1')
4. 其他模块的反射
二 判断函数和方法
1. 通过打印函数名的方式区别
2. 可以借助模块判断
from types import FunctionType # 函数
from types import MethodType # 方法
print(isinstance(func,FunctionType))