スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。

    is...?

     最近ガンダムビルドファイターズにガッツリはまってるEskeです。
     いやぁ、なんか久々に普通に変に身構えずに面白く見れるガンダムアニメですなぁ(*´▽`*)
     カードゲーム筐体「ガンダムトライエイジ」もアニメに連動してやってますね。X魔王とかすごいケンプファーとかのカード作ってるんでそっちも宜しくね(*ノω・*)テヘ(さりげないステマ)

     と、ビルドファイターズの話題は置いておいて、Python絡みでいつも忘れてしまって思い出すのに一苦労してるんでメモメモ・・・
     今日はpythonのisなんちゃら系のメモです。


    ■isinstance
     isinstanceはオブジェクトがあるクラスのインスタンスかどうかを調べられるビルトイン関数です。
    # isinstanceの例1
    
    class ClassA( str ):
        def print5( self ):
            print( self * 5 )
    
    a = ClassA( 'Python!' )
    isinstance( a, ClassA )
    
    # Result: True # 
    
     変数aはClassAのインスタンスなんで、isinstanceにかけるとTrueを返します。
     ClassAはstrから継承していますが、変数aをisinstanceでstrかどうか尋ねるとこれもTrueを返します。
    # ClassAのスーパークラスstrでもOK!
    isinstance( a, str )
    
    # Result: True # 
    
     つまりクラスの親を辿って調べてくれるんですね。これは中々便利!


     さらにisinstanceの第2引数はタプルにして複数個のクラスから当てはまるものがあるかどうかも調べられます。
    # 変数aはClassAのインスタンスで、ClassAはstrのサブクラスなのでTrueを返す。
    isinstance( a, ( str, list ) )
    # Result: True # 
    
    # aの親クラスにはtuple、listいずれも含まないのでFalseを返す。
    isinstance( a, ( tuple, list ) )
    # Result: False # 
    
    うむ、ベリーグッジョやっ。



    ■issubclass
     こちらはクラスがあるクラスから継承されたクラスかどうかを調べられるビルトイン関数です。毎回関数名を忘れるんですよね・・・
     isinstanceは第1引数がクラスのインスタンスでしたが、こちらの第1引数はクラスの型を表すtypeオブジェクトです。
    class ClassA( str ):
        def print5( self ):
            print( self * 5 )
    
    class ClassB( ClassA ):
        pass
    
    issubclass( ClassB, ClassA )
    # Result: True # 
    issubclass( ClassB, str )
    # Result: True # 
    
     こんな感じで親の親ももちろん遡って調べてくれます。便利ですね~(*^_^*)
     もちろん第2引数にはタプルで複数個のクラスを入れて調べることも出来ます。
    issubclass( ClassB, ( str, list ) )
    # Result: True # 
    
    issubclass( ClassB, ( int, list ) )
    # Result: False # 
    
     さぁこれでメモったし、安心安心!



     Pythonの関数は引数の型を問わないので、関数内部でこれらを用いていらない引数をガンガン弾いてやりましょうっ!!w
    スポンサーサイト

    コメントの投稿

    非公開コメント

    プロフィール

    Eske

    Author:Eske
    萌えイラストレーターを目指す3DCGイラストレーター。
    現在ポケモンカードゲーム、ガンダムトライエイジ、ガンダムコンクエスト、妖怪ウォッチとりつきカードゲームなどで3DCGを使用したイラストレーターとして参加中。

    主にここでは日々気づいたメモなんかを残してます。
    イラストのお仕事も受け付けております。ココからアクセスできますので、お気軽にご相談下さい。

    最新記事
    最新コメント
    カテゴリ
    最新トラックバック
    月別アーカイブ
    検索フォーム
    リンク
    QRコード
    QR
    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。