0

我对 Python 很陌生,我不知道有什么可用的。目前,我有这段代码可以快速将一些命名变量放在一起,所以我可以在其他地方使用它们:

def myfunction():
    props = namedtuple('props', '')

    props.color = "green"
    props.size = "large"
    props.wheels = 4
    props.roof = True

    return props

在这种情况下是namedtuple一个好的解决方案吗?或者它可以更简单吗?

4

2 回答 2

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()

您的方法没有遇到问题的唯一原因是您每次运行函数时都会创建一个新的类对象;您在其上设置的类属性不会在实例之间共享,因为从未创建任何实例。

如果您不想要不可变对象,请改用字典:

def myfunction():
    return {
        "color": "green",
        "size": "large",
        "wheels": 4,
        "roof": True
    }
于 2014-04-17T15:52:44.893 回答
1

如果您只是props用来存储数据,最简单的选择是使用dict

def myfunction():
    return {"color": "green",
            "size": "large",
            "wheels": 4,
            "roof": True}

dict然后访问的元素,props["color"]以此类推(当然,一旦您将返回值存储在名为“props”的变量中)。

于 2014-04-17T15:51:28.637 回答