したがって、私が作成するクラスに対してtype()
関数の動作を変更したいとします。私は私が何を意味するかを証明するために、2つのクラス、1「古いスタイル」クラスとobject
から継承する1「新しいスタイル」を、作成します:ユーザー作成クラスのtype()関数の動作を変更する
class Foo:
pass
class Bar(object):
pass
今、私はそれらのそれぞれのインスタンスを作成します:
spam = Foo()
eggs = Bar()
これらの各クラスでtype()
機能を使用するとどうなりますか?
>>> type(spam)
<type 'instance'>
>>> type(eggs)
<class '__main__.Bar'>
私はそれがよりこのように表示されるように、この動作を変更する方法を探しています:
>>> type(spam)
<type 'foo'>
私は他の多くのオブジェクトを見てきましたが、デフォルトのデータ型以外にも(これを行います明らかに)。例:
このようなものはかなり近いですが、私が助けることができれば、メンバーシップドットを中央に持たない方がよいでしょう。 (はい、私はこれでを使用していたコードは、インポートしたファイルになります。)
>>> from itertools import *
>>> z = imap(pow, (2, 3, 4), (5, 2, 4))
>>> type(z)
<type 'itertools.imap'>
私はこの質問への答えは本当に簡単であると確信しているが、何らかの理由で、私はどのように言葉に把握することはできませんこれに関する検索クエリ。どんな助けもありがとう。
詳細な対応をありがとうございます!うん、私はすでに '__repr__'関数がクラスそのものになっています。あなたが 'type(type(Foo()))'を実行すると、 ' __main __。MyType '>'を得ることができます。通常は 'type(type(something))'は ''を返します。これを修正して 'Foo'クラスを他のデータ型と完全に一致させる方法はありますか?ありがとう。 –