Python将默认值组织为对象

Python将默认值组织为对象,python,django,Python,Django,我有一个django应用程序,它正在使用第三方API,需要接收多个参数,如client_id、user_id等。我目前将这些值标记在文件顶部作为变量,但我希望将它们存储在对象中 我当前的设置如下所示: user_id = 'ID HERE' client_id = 'ID HERE' api_key = 'ID HERE' class Social(LayoutView, TemplateView): def grab_data(self): authenticate_u

我有一个django应用程序,它正在使用第三方API,需要接收多个参数,如client_id、user_id等。我目前将这些值标记在文件顶部作为变量,但我希望将它们存储在对象中

我当前的设置如下所示:

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_id和SERVICE_CONFIG['client_id',并将这些值设置为mixin,但我不知道如何以其他方式访问它们

Python不是Javascript。那是一本字典,不是一个物体。您可以使用项语法而不是属性语法访问字典:

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

可以使用类、实例或函数对象将数据存储为属性:

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
通常使用dict是存储数据的最简单方法,但在某些情况下,更高的属性访问可读性可能是首选,然后您可以使用上面的示例。使用lambda是最简单的方法,但对于阅读代码的人来说更容易混淆,因此前两种方法更可取