獲取類名和方法名
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) #創建變量並賦值方法