您好,登錄后才能下訂單哦!
利用Python反射機(jī)制,從代碼塊中靜態(tài)獲取參數(shù):
co_argcount: 普通參數(shù)的總數(shù),不包括參數(shù)和*參數(shù)。
co_names: 所有的參數(shù)名(包括參數(shù)和*參數(shù))和局部變量名的元組。
co_varnames: 所有的局部變量名的元組。
co_filename: 源代碼所在的文件名。
co_flags: 這是一個(gè)數(shù)值,每一個(gè)二進(jìn)制位都包含了特定信息。較關(guān)注的是0b100(0x4)和0b1000(0x8),如果co_flags & 0b100 != 0,說(shuō)明使用了*args參數(shù);如果co_flags & 0b1000 != 0,說(shuō)明使用了**kwargs參數(shù)。另外,如果co_flags & 0b100000(0x20) != 0,則說(shuō)明這是一個(gè)生成器函數(shù)(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)
結(jié)果:
co_names: x,y,z co_varnames: self,a,b,c,xx
以上這篇對(duì)Python 獲取類的成員變量及臨時(shí)變量的方法詳解就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持億速云。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。