回答:
さらに良い: inspect.isclass関数をます。
>>> import inspect
>>> class X(object):
...     pass
... 
>>> inspect.isclass(X)
True
>>> x = X()
>>> isinstance(x, X)
True
>>> y = 25
>>> isinstance(y, X)
Falsetype(whatever)常にクラスであるオブジェクトを返すため、このチェックは冗長です。そうしないwhateverと、インスタンス化する方法がないため、そもそもチェックを実行できません。
                    type(snakemake.utils)が返されますが<class 'module'>、がinspect.isclass(snakemake.utils)返されますFalse。
                    snakemake.utilはモジュールがクラスではないからですか?
                    inspect.isclassはおそらく最良のソリューションであり、実際にどのように実装されているかを確認するのは非常に簡単です。
def isclass(object):
    """Return true if the object is a class.
    Class objects provide these attributes:
        __doc__         documentation string
        __module__      name of module in which this class was defined"""
    return isinstance(object, (type, types.ClassType))import types
                    types.ClassTypePython 3では不要になりました(削除されました)。
                    In [8]: class NewStyle(object):        ...:     pass        ...:       In [9]: isinstance(NewStyle, (type, types.ClassType))     Out[9]: True
                    isinstance(object, type)ます。オブジェクトが好き。なおint、list、str、などがあるも、あなたが間を区別するためにこれを使用することはできませんので、クラスカスタムクラスPythonで定義されると、組み込みのCコードで定義されたクラス。
                    >>> class X(object):
...     pass
... 
>>> type(X)
<type 'type'>
>>> isinstance(X,type)
True'class Old:pass' 'isinstance(Old, type) == False'、しかしinspect.isclass(Old) == True。
                    isinstance(X, type)クラスの場合とそうでないTrue場合に戻ります。XFalse
S. Lott's answerは、4年古いと同じように見えます。
                    クラスFoo:は古いスタイルのクラスと呼ばれ、クラスX(object):は新しいスタイルのクラスと呼ばれます。
これを確認してくださいPythonの古いスタイルと新しいスタイルのクラスの違いは何ですか?。新しいスタイルがお勧めです。「についての記事を読む統一タイプとクラス」
最も簡単な方法はinspect.isclass、最も投票された回答に投稿されたとおりに使用することです。
実装の詳細はpython2 inspectとpython3 inspectにあります。
新しいスタイルのクラスの場合:isinstance(object, type)
古いスタイルのクラスの場合:isinstance(object, types.ClassType)
em、古いスタイルのクラスの場合はを使用しtypes.ClassTypeています。types.pyのコードは次のとおりです。
class _C:
    def _m(self): pass
ClassType = type(_C)ベンジャミン・ピーターソンはinspect.isclass()この仕事のための使用について正しいです。ただし、組み込み関数issubclassを使用して、Classオブジェクトが特定Classであるかどうか、したがって暗黙的にa Classであるかどうかをテストできることに注意してください。ユースケースによっては、これはもっとpythonicになる場合があります。
from typing import Type, Any
def isclass(cl: Type[Any]):
    try:
        return issubclass(cl, cl)
    except TypeError:
        return Falseその後、次のように使用できます。
>>> class X():
...     pass
... 
>>> isclass(X)
True
>>> isclass(X())
Falseここにはすでにいくつかの実用的な解決策がありますが、ここに別の解決策があります:
>>> import types
>>> class Dummy: pass
>>> type(Dummy) is types.ClassType
Truetypes.ClassTypePython 3で削除されました
                    
inspect.isclass戻るにTrueは、inspect.isclass(type(Myclass()))