我一直想知道是否有更簡(jiǎn)單的方法將類(lèi)屬性分配給方法本地名稱(chēng)空間。例如,在dosomething方法中,我顯式地引用self.a和self.b:class test: def __init__(self): self.a = 10 self.b = 20 def dosomething(self): a = self.a b = self.b return(a + b)但是有時(shí)我有很多變量(超過(guò)10個(gè)),而且鍵入和查看時(shí)會(huì)很亂-var = self.var在方法的開(kāi)頭我會(huì)有一堆語(yǔ)句。有什么辦法可以做得更緊湊嗎?(我知道更新local()不是一個(gè)好主意)編輯:理想情況下,我想要的是:def dosomething(self): populate_local_namespace('a', 'b') return(a + b)
4 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
我發(fā)現(xiàn)了另一種方法:
def dosomething(self):
for key in ['a', 'b']:
exec('{} = self.{}'.format(key, key))
return(a + b)
我不知道這是否危險(xiǎn)。如果有人可以對(duì)此發(fā)表評(píng)論,那就太好了。

夢(mèng)里花落0921
TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
通過(guò)將變量存儲(chǔ)在字典中,您可以通過(guò)權(quán)衡輕松解決此問(wèn)題。
data = {}
copy_to_local_variables = ["a", "b", "c", "d"]
for var_name in copy_to_local_variables:
data[var_name] = getattr(self, var_name)
(盡管我無(wú)法理解為什么您需要將類(lèi)屬性復(fù)制到方法本地名稱(chēng)空間中)
添加回答
舉報(bào)
0/150
提交
取消