動的に作成された列挙型のメソッドオーバーロード

MLmuchAmaze

目標は、動的に作成された属性を使用しての__str__(self)メソッドをオーバーロードすることEnumです。

動的列挙型は次のように作成できます

[1]:

from enum import Enum, auto

A = Enum('A',
         dict(('a_'+some_input, auto())
              for some_input in ['1','2','3']),
         module=__name__)

メソッドのオーバーロードは、

[2]:

class A(Enum):
    a_no_input = auto()

    def __str__(self):
        return str(self.name)

別々に、両方の例は必要に応じて機能します。両方を組み合わせるために私は試しました:

[1]: ...
A.__class__.__str__ = lambda self: str(self.name)

ただし、これによっての出力は変わりませんprint(A.a_1)

そして

class A(Enum):
    def __init__(self):
        super('A',
              dict(('a_' + some_input, auto())
                   for some_input in ['1', '2', '3']),
              module=__name__)

    def __str__(self):
        return str(self.name)

ただし、これでは、を介してアクセスできる静的属性は作成されませんA.a_1

列挙型の静的属性を動的に作成し、スーパークラスのメソッドをオーバーロードするにはどうすればよいEnumですか?

イーサンファーマン

3番目のコードスニペットは次のようになります。

A.__str__ = lambda self: str(self.name)

__class__取り出したことに注意してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

列挙型抽象メソッドのオーバーロード

分類Dev

列挙型のインターフェイスを実装しますが、なぜ日食が自動的にオーバーライドされるインターフェイスメソッドの前にセミコロンを置きますか?

分類Dev

メソッド引数で指定された名前の列挙型をロードする方法は?

分類Dev

署名された基になる型列挙型のビットフィールドでのオーバーフロー

分類Dev

Javaでオーバーロードされたメソッドを使用した型の順序

分類Dev

SWIGの型チェックとオーバーロードされたメソッド

分類Dev

単一のメソッドにマップされたJava列挙型複数のキー

分類Dev

列挙型を使用したメソッドのオーバーロードエラー-C#(エラーCS0663)

分類Dev

ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

分類Dev

メソッドのオーバーロードされたJavadocの再利用

分類Dev

オーバーロードされたメソッドのJavadocの再利用

分類Dev

文字列補間によるオーバーロードされた文字列メソッド

分類Dev

代替によるオーバーロードされたメソッド値

分類Dev

自動およびオーバーロードされたメソッドの区別

分類Dev

継承されたオーバーロードメソッドの使用

分類Dev

オーバーロードされたメソッドの優先度

分類Dev

MockitoScalaのオーバーロードされたメソッド値thenReturnと代替

分類Dev

オーバーロードされたメソッドのmockito.AdditionalAnswers.returnsFirstArg()

分類Dev

オーバーロードされたメソッドの呼び出し

分類Dev

親のオーバーロードされたメソッドを使用する

分類Dev

クラスのオーバーロードされたメソッド

分類Dev

オーバーロードおよびオーバーライドされたメソッドのClojuregen-class

分類Dev

静的に作成されたオブジェクトのメソッドをオーバーライドする

分類Dev

C ++でオーバーロードされたメソッドの戻り値の型を取得するにはどうすればよいですか?

分類Dev

オーバーロードされたメソッドにバイトの引数を渡します

分類Dev

ファクトリユーザーが列挙型に基づいて間違ったテンプレート化またはオーバーロードされたメソッドを呼び出さないようにするにはどうすればよいですか?

分類Dev

メソッドがオーバーロードされたときに埋め込み型メソッドを呼び出すGolang構造体

分類Dev

オーバーロードされたジェネリックメソッドで型推論はどのように機能しますか

分類Dev

オーバーライドされたPrototypeメソッドを元の動作に「リセット」する方法

Related 関連記事

  1. 1

    列挙型抽象メソッドのオーバーロード

  2. 2

    列挙型のインターフェイスを実装しますが、なぜ日食が自動的にオーバーライドされるインターフェイスメソッドの前にセミコロンを置きますか?

  3. 3

    メソッド引数で指定された名前の列挙型をロードする方法は?

  4. 4

    署名された基になる型列挙型のビットフィールドでのオーバーフロー

  5. 5

    Javaでオーバーロードされたメソッドを使用した型の順序

  6. 6

    SWIGの型チェックとオーバーロードされたメソッド

  7. 7

    単一のメソッドにマップされたJava列挙型複数のキー

  8. 8

    列挙型を使用したメソッドのオーバーロードエラー-C#(エラーCS0663)

  9. 9

    ネストされた列挙型のテンプレートパラメーターでオーバーロードするC ++フレンド演算子

  10. 10

    メソッドのオーバーロードされたJavadocの再利用

  11. 11

    オーバーロードされたメソッドのJavadocの再利用

  12. 12

    文字列補間によるオーバーロードされた文字列メソッド

  13. 13

    代替によるオーバーロードされたメソッド値

  14. 14

    自動およびオーバーロードされたメソッドの区別

  15. 15

    継承されたオーバーロードメソッドの使用

  16. 16

    オーバーロードされたメソッドの優先度

  17. 17

    MockitoScalaのオーバーロードされたメソッド値thenReturnと代替

  18. 18

    オーバーロードされたメソッドのmockito.AdditionalAnswers.returnsFirstArg()

  19. 19

    オーバーロードされたメソッドの呼び出し

  20. 20

    親のオーバーロードされたメソッドを使用する

  21. 21

    クラスのオーバーロードされたメソッド

  22. 22

    オーバーロードおよびオーバーライドされたメソッドのClojuregen-class

  23. 23

    静的に作成されたオブジェクトのメソッドをオーバーライドする

  24. 24

    C ++でオーバーロードされたメソッドの戻り値の型を取得するにはどうすればよいですか?

  25. 25

    オーバーロードされたメソッドにバイトの引数を渡します

  26. 26

    ファクトリユーザーが列挙型に基づいて間違ったテンプレート化またはオーバーロードされたメソッドを呼び出さないようにするにはどうすればよいですか?

  27. 27

    メソッドがオーバーロードされたときに埋め込み型メソッドを呼び出すGolang構造体

  28. 28

    オーバーロードされたジェネリックメソッドで型推論はどのように機能しますか

  29. 29

    オーバーライドされたPrototypeメソッドを元の動作に「リセット」する方法

ホットタグ

アーカイブ