获取类名和方法名
1.在函数外部获取函数名称,用.__name__获取
2.在函数内部获取当前函数名称,用sys._getframe().f_code.co_name方法获取
3.使用inspect模块动态获取当前运行的函数名,return inspect.stack()[1][3]需要封装个方法在被测函数中调用
4.在类内部获取类名称self.__class__.__name__
import inspect,sys def get__function_name(): #获取正在运行函数(或方法)名称 return inspect.stack()[1][3] def shuzf(): print(sys._getframe().f_code.co_name) print(get__function_name())
动态创建类和方法及属性
1.使用type创建类
def __init__(self,name,age): self.name = name self.age = age Dog_class = type("Dog",(object,),{"role":"dog","__init__":__init__}) #动态添加属性与方法 d = Dog_class('shuzf',22) print(type(Dog_class)) print(type(d)) print(d.role,d.name,d.age) out: <class 'type'> <class '__main__.Dog'> dog shuzf 22
2.使用setattr() 动态创建方法、属性
class A(): name = 'python' @classmethod def funcmethod(cls): return 'Hello world:funcmethod' setattr(A, 'age',30) #创建变量并赋值,可在下次直接使用 setattr(A,'funcmethod_class',A.funcmethod) #创建变量并赋值方法