我对Python很陌生,我不知道有什么可用。目前,我有这段代码可以快速将一些命名变量放在一起,所以我可以在其他地方使用它们:
def myfunction():
props = namedtuple('props', '')
props.color = "green"
props.size = "large"
props.wheels = 4
props.roof = True
return props
在这种情况下,namedtuple
是一个很好的解决方案吗?或者它可以更简单吗?
答案 0 :(得分:3)
namedtuple
是优秀的工具,用于生成固定大小的(不可变的)信息,就像元组一样,但为方便起见,使用命名属性。
但是,您正在错误地使用namedtuple
类工厂。 props
是类,您通常会像这样使用它:
Props = namedtuple('Props', 'color size wheels roof')
def myfunction():
props = Props(color="green", size="large", wheels=4, roof=True)
return props
这使得props
不可变(最终用户可以使用namedtuple._replace()
method生成新实例),也可以使用索引。
您遇到问题的唯一原因是每次运行函数时都会创建一个新的类对象;您在其上设置的类属性不会在实例之间共享,因为没有创建任何实例。
如果您不想要不可变对象,请改用字典:
def myfunction():
return {
"color": "green",
"size": "large",
"wheels": 4,
"roof": True
}
答案 1 :(得分:1)
如果您只是使用props
来存储数据,最简单的选择就是使用dict
:
def myfunction():
return {"color": "green",
"size": "large",
"wheels": 4,
"roof": True}
dict
的元素随后被视为props["color"]
等等(当然,一旦将返回值存储在名为“props”的变量中)。