您好,登錄后才能下訂單哦!
利用Python反射機制,從代碼塊中靜態獲取參數:
co_argcount: 普通參數的總數,不包括參數和*參數。
co_names: 所有的參數名(包括參數和*參數)和局部變量名的元組。
co_varnames: 所有的局部變量名的元組。
co_filename: 源代碼所在的文件名。
co_flags: 這是一個數值,每一個二進制位都包含了特定信息。較關注的是0b100(0x4)和0b1000(0x8),如果co_flags & 0b100 != 0,說明使用了*args參數;如果co_flags & 0b1000 != 0,說明使用了**kwargs參數。另外,如果co_flags & 0b100000(0x20) != 0,則說明這是一個生成器函數(generator function)。
class A: def __init__(self, a, b, c): self.x = a self.y = b self.z = c xx = 1 def __str__(self): co = self.__init__.func_code co_names, co_varnames = 'co_names: ', 'co_varnames: ' co_names += ','.join(co.co_names) co_varnames += ','.join(co.co_varnames) return ''.join((co_names, '\n', co_varnames)) if '__main__' == __name__: obj = A(1, 2, 3) print str(obj)
結果:
co_names: x,y,z co_varnames: self,a,b,c,xx
以上這篇對Python 獲取類的成員變量及臨時變量的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。