

関数 typecheck() でやりたいのは引数 v が class なのか function なのか それ以外なのかの判別することです。  
現状では文字列比較していますが、この比較判別部分について、もっと正しいやり方があれば教えてください。よろしくお願いします。

[code]

    class C:
        pass
    def typecheck(v):
        if   str(v).startswith('<class'):
              return("class")
        elif str(v).startswith('<function'):
              return("function")
        else: return("other")
    print( typecheck(C) )
    print( typecheck(typecheck) )
    print( typecheck("") )
    
[/code]


CC BY-SA 4.0
2023-06-22T20:49:08.027
95330
2023-06-23T00:26:30.670
2023-06-23T00:26:30.670
3060
58830
question
python
Python で引数の型を判別したい


基本的にはこちらのようなコードになると思います。必要に応じて細部を調整してください。

[code]

    import types
    
    class C:
        pass
    def typecheck(v):
        if   isinstance(v, type):
              return "class"
        elif isinstance(v, types.FunctionType):
              return "function"
        else: return "other"
    print( typecheck(C) )
    print( typecheck(typecheck) )
    print( typecheck("") )
    
[/code]


CC BY-SA 4.0
2023-06-22T21:23:44.100
95331
2023-06-22T21:23:44.100
43506
95330
answer