2009-05-19 117 views
13

我有一個接受類(不是實例)的函數,並且根據它是否是特定類或該的子類,我需要通過它涉及其他兩個(第三方)工廠功能之一。如何判斷一個類是否來自另一個類

(爲了防止任何異議,我知道這不是很Python的,但是我依賴於第三方庫接受的東西。)

issubclass僅適用於實例,而不是類對象本身。我想我可以實例化這個類,做issubclass並拋棄實例,但這看起來有點浪費。

以下是我目前正在做的事情,依靠內置的mro屬性來判斷某個類是否在我班的祖先列表中。這是否安全,是否有更好的方法?

if GenericClass in myclass.__mro__: 
    result = generic_factory(myclass) 
else: 
    result = other_factory(myclass) 

回答

28

issubclass僅適用於實例,而不是類對象本身。

它正常工作對我來說:

>>> class test(object):pass 
... 
>>> issubclass(test,object) 
True 
+0

AARGH,我是用isinstance混淆了。謝謝。 – 2009-05-19 09:09:12

相關問題