Python カスタム クラス __str__ (詳細な例)

乌拉乌拉~
リリース: 2018-08-23 13:37:55
オリジナル
2448 人が閲覧しました

次の記事では、Python のカスタム クラス とは何かについて学びましょう。 python カスタム クラス とは何か、および Python プログラミングにおいて Python カスタム クラスが果たせる役割について学びます。

変数名や関数名が __slots__ のような __xxx__ の形式になっている場合は、注意する必要があります。これらは Python で特別な用途に使用されます。

__slots__私たちはすでにその使用方法を知っており、クラスが len() 関数で動作できるようにする __len__() メソッドについても知っています。

さらに、Python クラスには、

クラスのカスタマイズに役立つ特別な目的の関数が多数あります。

Python カスタム クラス __str__ (詳細な例)

#str__

最初に Student クラスを定義し、インスタンスを出力します。

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...
>>> print(Student('Michael'))
<__main__.Student object at 0x109afb190>
ログイン後にコピー

大量の <__main__.Student オブジェクト at 0x109afb190> を出力しますが、これはかなり見苦しくなります。

どうすれば綺麗に印刷できますか? __str__() メソッドを定義して、見栄えの良い文字列を返すだけで済みます。

>>> class Student(object):
...     def __init__(self, name):
...         self.name = name
...     def __str__(self):
...         return &#39;Student object (name: %s)&#39; % self.name
...
>>> print(Student(&#39;Michael&#39;))
Student object (name: Michael)
ログイン後にコピー

この方法で出力されたインスタンスは、見栄えが良いだけでなく、インスタンス内の重要なデータも簡単に確認できます。 。

しかし、注意深い人は、印刷せずに変数を直接入力しても、印刷された例の見栄えがよくないことに気づくでしょう:

>>> s = Student(&#39;Michael&#39;)
>>> s<__main__.Student object at 0x109afb310>
ログイン後にコピー

これは、変数呼び出しの直接表示が __str__() ではないためです。ですが、_ _repr__() の違いは、__str__() はユーザーが見た文字列を返すのに対し、__repr__() はプログラム開発者が見た文字列を返すことです。つまり、__repr__() はデバッグ用です。

解決策は、別の __repr__() を定義することです。ただし、通常、__str__() と __repr__() のコードは同じであるため、次のような怠惰な記述方法があります。

class Student(object):
    def __init__(self, name):
        self.name = name
    def __str__(self):
        return &#39;Student object (name=%s)&#39; % self.name
    __repr__ = __str__
ログイン後にコピー

上記がこの記事で説明されている内容のすべてです。この記事では主に次の内容を紹介します

Python カスタム class__str__ 関連の知識として、上記の内容を理解するために情報を活用していただければ幸いです。この記事で説明したことがあなたのお役に立ち、Python の学習が容易になることを願っています。

関連知識の詳細については、php 中国語 Web サイトの

Python チュートリアル 列を参照してください。

以上がPython カスタム クラス __str__ (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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