使用issubclass

时间:2012-02-11 05:50:49

标签: python

>>> import sys
>>> sys.version_info
(2, 4, 4, 'final', 0)
>>> class C:
...    pass
...
>>> issubclass(C, C)
True
>>> issubclass(C, object)
False
>>> class T(object):
...    pass
...
>>> issubclass(T, T)
True
>>> issubclass(T, object)
True
>>>

问题1 >为什么CC的子类?

问题2 >什么是C的基类?

谢谢

// Chris Morgan的更新(至少在我看来,以下手册根本没有帮助)

>>> help(issubclass)
Help on built-in function issubclass in module __builtin__:

issubclass(...)
    issubclass(C, B) -> bool

    Return whether class C is a subclass (i.e., a derived class) of class B.
    When using a tuple as the second argument issubclass(X, (A, B, ...)),
    is a shortcut for issubclass(X, A) or issubclass(X, B) or ... (etc.).

3 个答案:

答案 0 :(得分:5)

查看issubclass(class, classinfo)文档

  

如果class是子类(直接,间接或虚拟),则返回true   CLASSINFO。类被认为是其自身的子类。 classinfo可能   是类对象的元组,在这种情况下是classinfo中的每个条目   将被检查。在任何其他情况下,都会引发TypeError异常。

并检查C的基类使用inspect.getmro(cls)函数。

  

在方法中返回类cls的基类元组,包括cls   解决方案。

   >>> class C(object):
...        pass
...
>>> inspect.getmro(C)
(<class '__main__.C'>, <type 'object'>)
>>>

答案 1 :(得分:2)

http://docs.python.org/library/functions.html#issubclass从该链接开始,“一个类被认为是其自身的子类。”

要回答第二个问题,C是一个“旧式”类,因此它不是对象的子类。如果需要新的样式类,请将对象包含为超类。有关详细信息,请参阅http://www.python.org/doc/newstyle/

答案 2 :(得分:1)

http://docs.python.org/library/functions.html#issubclass

  1. 一个类被认为是它自己的子类。

  2. C没有基类

    打印C. __ 基础 __

    ()