インスタンス化のないプロパティとしてのStaticmethod

dvonessen

私が持っているclass環境変数から文字列を返しますPythonの静的メソッドの束を保持するために使用されています。

class GitLabCiEnv():
    """
    Gitlab CI Environment variables.
    """
    @staticmethod
    def CHAT_CHANNEL() -> str:
        """
        Source chat channel which triggered the ChatOps command.

        Added in GitLab 10.6
        Available in GitLab Runner all
        """
        return os.environ["CHAT_CHANNEL"]

    @staticmethod
    def CHAT_INPUT() -> str:
        """
        Additional arguments passed in the ChatOps command.

        Added in GitLab 10.6
        Available in GitLab Runner all
        """
        return os.environ["CHAT_INPUT"]

これで、環境変数の値を取得するためにclass呼び出すことができGitLabCiEnv.CHAT_CHANNEL()ます。「醜い」とは、それぞれにパランセシスを使わなければならないということ@staticmethodです。私がすることはGitLabCiEnv.CHAT_CHANNEL、paranthesisなしです。

私はこのクラスのオブジェクトをインスタンス化したくありません。私の意見では、オブジェクトを持つことの利点はありません。クラス変数を使用してさまざまな実装を試しましたが、クラスがインポートされると各変数が初期化されます。これは私が望むものではありません。

多分誰かが私のための解決策を持っています。

どうもありがとうございました!

juanpa.arrivillaga

これはおそらくクラスであってはなりません。ただし、これが本当に必要な場合は、カスタム記述子を作成するだけです。

import os

class EnvProxy:
    def __init__(self, key):
        self.key = key
    def __get__(self, obj, objtype=None):
        return os.environ[self.key]

class GitLabCiEnv:
    CHAT_CHANNEL = EnvProxy("CHAT_CHANNEL")
    CHAT_INPUT = EnvProxy("CHAT_INPUT")

例:

(py38) juanarrivillaga@50-254-139-253-static Project-Roche-2 % CHAT_INPUT=foo python -i test.py
>>> GitLabCiEnv.CHAT_INPUT
'foo'

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

このクラスをインスタンス化したときに配列プロパティが検出されないのはなぜですか?

分類Dev

SceneKitのインスタンスプロパティ「autoenablesDefaultLighting」が機能しない

分類Dev

オブジェクト内のすべてのプロパティとサブプロパティをインスタンス化します(C#.net)

分類Dev

インスタンス化時のプロパティInvalidDataException

分類Dev

null不可能なプロパティをkotlinデータクラスのthisポインタとしてどのように初期化しますか?

分類Dev

オブジェクトをインスタンス化しても、そのプロパティが自動的にインスタンス化されないのはなぜですか?

分類Dev

PHP:継承とインスタンスのプロパティ

分類Dev

値の違い-AzureTableStorageのタイムスタンプとAzureTableStorageの新しいDateTimeプロパティ

分類Dev

オブジェクトのインスタンス化後に定義されたプロパティが独自のプロパティではない理由

分類Dev

クラスのインスタンス化後のプロパティ値として非同期値を設定する

分類Dev

シーンオブジェクトインスタンスをシーンのプロパティとして保存してもよろしいですか?

分類Dev

オブジェクト単一インスタンスの配列プロパティとしてのJS

分類Dev

特にプロパティインスタンス化メソッドの違いは何ですか。サービス基本クラスに関して?

分類Dev

サブクラスをインスタンス化し、特定のプロパティを継承しない方法はありますか?

分類Dev

Kotlinのインターフェースプロパティとしての匿名インターフェースインスタンス

分類Dev

そのクラスのインスタンスを介してクラスプロパティを設定するとどうなりますか?

分類Dev

タブバーコントローラーの同じアイテムを使用して、ブールプロパティの値に基づいて代替ビューをインスタンス化することは可能ですか?

分類Dev

C#| 別のインスタンスのプロパティを使用して新しいオブジェクトを初期化する構文

分類Dev

「静的」は、プロパティにクラスのインスタンスが1つしかないことをどのように保証しますか?

分類Dev

少ないjs:別のミックスインの引数としてのミックスインプロパティ?

分類Dev

クラスプロパティタイプとしてのCollectionViewSource

分類Dev

スタイルプロパティで使用しているときにAngular4でこのプロパティをバインドすることの何が問題になっていますか?

分類Dev

カスタムコントロールの依存関係プロパティへのプロパティのバインドが機能しない

分類Dev

データグリッドアイテムソースを別のクラスのプロパティにバインドしようとしています

分類Dev

インスタンス化せずにクラスのプロパティの配列を取得しますか?

分類Dev

新しいプロパティベースの初期化のためのプライベートパラメータレスコンストラクタ

分類Dev

インスタンス化後、同じタイプのすべてのオブジェクトのプロパティを更新します

分類Dev

F#でクラスとそのプロパティをインスタンス化する方法

分類Dev

クラスをインスタンス化し、1つのステートメントでプロパティを割り当てます

Related 関連記事

  1. 1

    このクラスをインスタンス化したときに配列プロパティが検出されないのはなぜですか?

  2. 2

    SceneKitのインスタンスプロパティ「autoenablesDefaultLighting」が機能しない

  3. 3

    オブジェクト内のすべてのプロパティとサブプロパティをインスタンス化します(C#.net)

  4. 4

    インスタンス化時のプロパティInvalidDataException

  5. 5

    null不可能なプロパティをkotlinデータクラスのthisポインタとしてどのように初期化しますか?

  6. 6

    オブジェクトをインスタンス化しても、そのプロパティが自動的にインスタンス化されないのはなぜですか?

  7. 7

    PHP:継承とインスタンスのプロパティ

  8. 8

    値の違い-AzureTableStorageのタイムスタンプとAzureTableStorageの新しいDateTimeプロパティ

  9. 9

    オブジェクトのインスタンス化後に定義されたプロパティが独自のプロパティではない理由

  10. 10

    クラスのインスタンス化後のプロパティ値として非同期値を設定する

  11. 11

    シーンオブジェクトインスタンスをシーンのプロパティとして保存してもよろしいですか?

  12. 12

    オブジェクト単一インスタンスの配列プロパティとしてのJS

  13. 13

    特にプロパティインスタンス化メソッドの違いは何ですか。サービス基本クラスに関して?

  14. 14

    サブクラスをインスタンス化し、特定のプロパティを継承しない方法はありますか?

  15. 15

    Kotlinのインターフェースプロパティとしての匿名インターフェースインスタンス

  16. 16

    そのクラスのインスタンスを介してクラスプロパティを設定するとどうなりますか?

  17. 17

    タブバーコントローラーの同じアイテムを使用して、ブールプロパティの値に基づいて代替ビューをインスタンス化することは可能ですか?

  18. 18

    C#| 別のインスタンスのプロパティを使用して新しいオブジェクトを初期化する構文

  19. 19

    「静的」は、プロパティにクラスのインスタンスが1つしかないことをどのように保証しますか?

  20. 20

    少ないjs:別のミックスインの引数としてのミックスインプロパティ?

  21. 21

    クラスプロパティタイプとしてのCollectionViewSource

  22. 22

    スタイルプロパティで使用しているときにAngular4でこのプロパティをバインドすることの何が問題になっていますか?

  23. 23

    カスタムコントロールの依存関係プロパティへのプロパティのバインドが機能しない

  24. 24

    データグリッドアイテムソースを別のクラスのプロパティにバインドしようとしています

  25. 25

    インスタンス化せずにクラスのプロパティの配列を取得しますか?

  26. 26

    新しいプロパティベースの初期化のためのプライベートパラメータレスコンストラクタ

  27. 27

    インスタンス化後、同じタイプのすべてのオブジェクトのプロパティを更新します

  28. 28

    F#でクラスとそのプロパティをインスタンス化する方法

  29. 29

    クラスをインスタンス化し、1つのステートメントでプロパティを割り当てます

ホットタグ

アーカイブ