>>> 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 >为什么C
是C
的子类?
问题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.).
答案 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
一个类被认为是它自己的子类。
C没有基类
打印C. __ 基础 __
()