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