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クラス ファクトリを正しく使用していません。propsclassです。通常は次のように使用します。

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 に答える