2014-09-13 90 views
0

我有一個django應用程序正在使用第三方API,並且需要接收幾個參數,例如client_id,user_id等。我目前將這些值標記在我的文件頂部作爲變量,但我想將它們存儲在一個對象中。Python將默認值設爲對象

我的當前設置看起來是這樣的:

user_id = 'ID HERE' 
client_id = 'ID HERE' 
api_key = 'ID HERE' 

class Social(LayoutView, TemplateView): 
    def grab_data(self): 
     authenticate_user = AuthenticateService(client_id, user_id) 

我想設置爲一個對象

SERVICE_CONFIG = { 
    'user_id': 'ID HERE', 
    'client_id': 'ID HERE' 
} 

所以,我可以訪問它們在我的課,像這樣的默認值:

authenticate_user = AuthenticateService(SERVICE_CONFIG.client_id, SERVICE_CONFIG.user_id) 

我試過SERVICE_CONFIG.client_idSERVICE_CONFIG['client_id'],以及settin把這些值作爲一個混合,但我不知道如何以任何其他方式訪問它們。

回答

0

Python不是Javascript。這是一本字典,而不是一個對象。您訪問使用項目語法詞典,而不是屬性語法:

AuthenticateService(SERVICE_CONFIG['client_id'], SERVICE_CONFIG['user_id']) 
0

你可以使用一個類的實例,或函數對象來存儲數據的屬性:

class ServiceConfig: 
    user_id = 1 
    client_id = 2 

ServiceConfig.user_id # => 1 

service_config = ServiceConfig() 

service_config.user_id # => 1 

service_config = lambda:0 

service_config.user_id = 1 
service_config.client_id = 2 

service_config.user_id # => 1 

通常使用的字典是存儲數據的最簡單方法,但在某些情況下,可以優先使用屬性訪問的更高可讀性,然後您可以使用上述示例。使用lambda是最簡單的方法,但對於閱讀代碼的人來說更容易混淆,因此前兩種方法更可取。