13
クラス(インスタンスではありません)を受け入れ、特定のクラスであるかどうかに応じて、またはそのサブクラスであるを渡す必要があります。これは2つの他の(第三者の)工場機能のうちの1つにあります。クラスが別のクラスの子孫であるかどうかを調べる方法
issubclass
はインスタンスのみのために働く(異議を未然に防ぐために、私は、これは非常にPython的ではありませんが、私は、サードパーティのライブラリが受け入れるものに依存してい承知している。)、ではないクラスはオブジェクト自体。私はクラスをインスタンス化することができると思う、issubclass
を実行し、インスタンスをスローするが、それは少し無駄に思われる。
mro属性を使用して、特定のクラスが自分のクラスの祖先のリストに含まれているかどうかを確認することができます。これは安全ですか?これを行うにはよりよい方法がありますか?
if GenericClass in myclass.__mro__:
result = generic_factory(myclass)
else:
result = other_factory(myclass)
Aargh、私はでisinstanceでそれを混乱されました。ありがとう。 –