python-獲取類名和方法名,動態建立類和方法及屬性

獲取類名和方法名
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) #建立變量並賦值方法
相關文章
相關標籤/搜索