面向对象~~反射, 判断函数和方法

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))

3. 函数都是显性传参,方法都是隐性传参.

原文地址:https://www.cnblogs.com/lav3nder/p/11802049.html