我想创建一个struct
,其中包含stats\u user、stats\u password和stats\u ui的数据,而不是像这样单独使用它们。我该怎么清洗这个?你知道吗
def config(apps, groups, stats_user, stats_password, stats_uri,
bind_http_https, ssl_certs, templater):
logger.info("generating config")
config = templater.haproxy_head.format(
statsUser=stats_user,
statsPassword=stats_password,
statsURI=stats_uri
)
在名为
config
的函数中给config
赋值是一个非常糟糕的主意。Python没有所谓的“struct”,但是如果我理解正确的话,您可以将它放在字典中,然后在对
的调用中展开它.format
:
以及
有很多方法可以做到这一点。可以创建class,也可以使用dictionary,也可以使用named tuple。你知道吗
您的问题并不完全清楚您打算如何使用它们,但是通过所有这些解决方案(类、字典、命名元组),您可以将对象作为单个实体传递。你知道吗
自定义类
类是最具表现力的解决方案。可以定义具有所需属性的类,但也可以附加处理类中数据的方法。类也可以继承其他类或由其他类组成。你知道吗
命名元组
命名元组与类非常相似,但设置起来要简单一些。您只需定义名称和属性列表。你得到的是一个自定义类。你知道吗
另一个重要的区别是它们是不变的。一旦创建了命名元组,就不能更改它包含的值。你知道吗
注意,在实际使用中,类和命名元组是相同的。在这两种情况下,您都使用“点符号”来访问对象的元素(例如:stats.用户名). 你知道吗
字典
字典的开销最少。它只是名称到值的映射。你知道吗
字典与类和命名元组的不同之处在于,通过将项名称作为键(例如:stats[“username”])来引用元素。你知道吗
您可以使用
namedtuple
。请看这里:https://docs.python.org/3/library/collections.html#collections.namedtuple比如:
然后可以使用位置参数、关键字参数或混合参数创建Stats对象:
可以像访问任何其他对象一样访问成员(例如
s1.user
)在代码中,可以使用以下对象之一:
相关问题 更多 >
编程相关推荐