ホームページ > バックエンド開発 > Python チュートリアル > メタクラスを使用して Python クラスの文字列表現をカスタマイズするにはどうすればよいですか?

メタクラスを使用して Python クラスの文字列表現をカスタマイズするにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-06 14:58:03
オリジナル
964 人が閲覧しました

How can I customize the string representation of Python classes using metaclasses?

クラスのカスタム文字列表現: Python 的なアプローチ

Python では、クラスに対して独自の文字列表現を定義すると、クラスの文字列表現をより詳細に制御できます。クラスが紹介されます。 に似たデフォルトの表現とは異なり、より有益な、または視覚的に魅力的な表示を作成したい場合があります。この記事では、メタクラスを使用してクラスの文字列表現を調整する方法について説明します。

次のクラスについて考えてみましょう:

class foo(object):
    pass
ログイン後にコピー

デフォルトでは、foo を文字列に変換すると次の結果が得られます:

>>> str(foo)
"<class '__main__.foo'>"
ログイン後にコピー

この表現をカスタマイズするには、クラスのメタクラス内で __str__() または __repr__() を実装できます。これらのマジック メソッドは、それぞれ、クラスの読み取り可能で明確な文字列表現を返す役割を果たします。

次の例は、メタクラスにカスタム __repr__() を実装する方法を示しています。

class MC(type):
    def __repr__(self):
        return 'Wahaha!'

class C(object):
    __metaclass__ = MC


print(C)
ログイン後にコピー

このコードは「ワハハ!」を出力します。クラス C を出力するとき。

読み取り可能な文字列化が必要な場合は、__str__ を使用します。明確な表現には __repr__ を使用します。 Python 3 では、次のようにクラス定義自体でメタクラスを指定する必要があります。

class MC(type):
    def __repr__(self):
        return 'Wahaha!'

class C(object, metaclass=MC):
    pass


print(C)
ログイン後にコピー

以上がメタクラスを使用して Python クラスの文字列表現をカスタマイズするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート