2016-10-14 10 views
0

私はPython(int、str、xrangeなど)のすべてのstd型関数をキャッチする方法を探しています。変数がPythonの標準型関数であることを確認してください

基本的には、<class X>の代わりに<type X>のようなreprを持つものはありません。ここではPython 2のすべてのSTDタイプの完全なリストです: https://docs.python.org/2/library/stdtypes.html

私はisinstance(X, type)またはtype(X) == typeを使用する場合、それはあまりにもすべてのクラスをキャッチするが、私は唯一の型の関数(またはそれらのいずれかに割り当てられている任意の名前を検出したいです(すなわちmy_int = int)。X.__name____builtins__であるが、私はそれはきれいでも正解かどうかわからない場合は私の心に来る

だけのアイデアをチェックしている。

+0

を説明してもらえますか? – jonrsharpe

+0

明示的にリストすることができます... 'isinstance(x、(list、dict、set、unicode、str、...))'または 'x in {list、dict、set、unicode、str、... } '。好奇心から、何かそれが組み込み型であるかどうかは重要ですか? – mgilson

+0

有限の数字があるので、それらをすべて列挙できますが、私はそれを避けることを望んでいました。私は任意のプリミティブ型関数をキャッチしようとしています。 Pythonでよりプリミティブな型を作成することはできないと思いますか?これまでに存在する唯一のものは組み込みです。それ以外はクラスになります。 –

答えて

0

何が提案することは私には良いようです。

builtin = dir(__builtins__) 
def is_builtin(tested_object): 
    return tested_object.__class__.__name__ in builtin 

ただし、組み込みタイプは影で囲むことができます。ロブからのコメントの後

更新:あなたが実際に達成しようとし、そしてなぜしているもの

def is_builtin(tested_object): 
    return tested_object.__class__.__module__ == '__builtin__' 
+1

または 'tested_object .__ class __.__ module__ == '__builtin __''? –

+0

それは本当に良いです! –

関連する問題