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) #創建變量並賦值方法

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM