2017-05-07 24 views
-4

我需要一個解決方案,像這樣的點定義的Python 2.7變量名:的Python 2.7:變量名用點

myvar.one.two = 12 

在這裏,我找到了一個很好的解決方案:How do I wrangle python lookups: make.up.a.dot.separated.name.and.use.it.until.destroyed = 777

但我不能確定如下因素變量名:

myvar.one.two = 12 
myvar.one.two.three = 123 

不幸的是,我得到了以下錯誤消息:

AttributeError: 'int' object has no attribute 'three' 

有沒有人有解決這個問題的想法?

+1

errr你爲什麼不使用myvar_one_two_three? – Guil23

+0

或者只是把它們放在一個字符串中,並使用字典 –

+0

或給他們更明智的名字。 –

回答

0

錯誤代碼os正確因爲在myvar.one.two下,你放置了12個int。 Python是動態類型的,所以即使沒有在對象中聲明,也可以創建對象的屬性。但是當你在two下存儲一個int值時,你有一個包含所有屬性和方法的整數對象。基本類型是不可變的,你不能添加屬性,因此添加two.three會給你一個錯誤。

-1

這裏是一個可以讓你創建和訪問詞典與點符號庫 - https://github.com/cdgriffith/Box
與@ Guil23,你應該只使用下劃線,而不是同意。
或者,如果您有非常複雜和結構化的數據,請使用namedtuples的組合或僅僅是普通的舊類。