3

のような特別なシングルトンを作成するにはどうすればよいNoneですか? (私はpythonが初めてです。)

私はこの種のことをできるようにしたい:

def create_mutations(d):
    return [
        Mutation(c, v)
        if v is not CellAction.Delete else
        Mutation(c, isDelete=True)
        for (c, v) in d
        ]

次のように使用します。

create_mutations({'a': 5, 'b': None, 'c': CellAction.Delete})

aこれにより、「set to 5、set bto None、および delete 」を意味する 3 つのミューテーションを含むリストが作成されcます。

ポイントは、「set to 」と「delete」の区別がないため、 Iの定義でcreate_mutationsは使用できないということです。... if v is not None else ...bNoneb

質問が明確でない場合は明確にすることができます。

4

3 に答える 3

6

object次のように、モジュールまたはクラスのどこかでインスタンス化できます。

Delete = object()

ほとんどの場合、これで十分です。

于 2013-07-10T20:51:50.240 に答える
3

オブジェクトを作成して名前を付けるだけです。空のクラスは次のようになります。

class Delete:
    pass

または、Michael が指摘するように、objectインスタンスです。

を使用してテストする場合は、使用するオブジェクトは変更可能にする必要がありますis。Python には、不変オブジェクトのインスタンスを共有する習慣があります。(たとえば、空のタプルはすべて同じオブジェクトです。)

于 2013-07-10T20:52:20.370 に答える
1

簡単な答えは、できないということです (まあ、できるかもしれませんが、それはあなたがやりたいことではありません)。

ここでは、次のようなクラスを使用する必要があります (または、内部にさまざまなアクション (他のクラス) をDeleteCell = object()含むクラスまたはモジュールを使用することもできます)。CellAction

于 2013-07-10T20:55:22.290 に答える