這是不好的編程習慣,是的,我知道,但這些腳本純粹是我的,這種技術會減輕我的編碼很多。從變量設置類(自)變量?
現在,我有一個SQLite數據庫,其中包含一組鍵值對,代表我的腳本的配置指令。腳本本身是一個我導入其他腳本的類。
所以,現在,當我想訪問一個配置變量,我稱之爲是這樣的:
myLib.myClass.getConfigVariable("theItemIWant")
在腳本中使用配置變量時,這變得非常難看。
所以我想簡化對這些變量的訪問。
myLib.myClass.config['theItemIWant']
但我更優雅的思維甚至有點:我可以用一本字典,當類加載並做預填充。我編寫了一個單獨的配置類,我想提供對配置條目的可變級別訪問。
所以我希望能夠做的是:
myLib.Config().theItemIWant
還是要在這樣的腳本實例化一個對象:
def myRoutine(self):
cfg = myLib.Config()
print cfg.theItemIWant
我讀過有關醜(使用EXEC)方法來實現這一點,而我其實可以,但我無法弄清楚如何以這種方式設置CLASS級變量。大多數人建議使用exec或改變變量或全局變量,但我不確定這是否會直接在Config類中設置變量,而不是在其他地方。
使用EXEC失敗:
SyntaxError: unqualified exec is not allowed in function '__init__' it contains a nested function with free variables
因此,我認爲這樣做的唯一方法是改變瓦爾(),但我不知道如何適用於類。
目前還不清楚你想要做什麼,或者你爲什麼要使用'exec',尤其是因爲你沒有展示一個完整的例子。如果你想設置一個成員變量,只需設置它。 – Marcin 2013-05-01 17:27:29
你可以用'exec'來舉一個你的代碼的例子嗎?目前還不清楚你想要達到的目標。爲什麼你不能'myLib.config.theItemIWant = whatever'? – BrenBarn 2013-05-01 17:27:52
[從用戶輸入創建動態命名變量](http://stackoverflow.com/questions/11354214/creating-dynamically-named-variables-from-user-input) – Marcin 2013-05-01 17:52:59