2014-09-13 122 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是最简单的方法,但对于阅读代码的人来说更容易混淆,因此前两种方法更可取。