当我试图检查Python 3
和Python 2
中class
声明的类型时,我得到了奇怪的结果,如下所示:
>>> #python 2.7.6
>>> class MyClass:
... pass
...
>>> type(MyClass)
<type 'classobj'>
>>> hasattr(MyClass, '__call__')
False
Python 2
中MyClass
的type
是classobj
,MyClass
没有{
然而,在Python 3
中,MyClass
的type
是class 'type'
,MyClass
有{MyClass
中声明它。在
我想原因是在Python 3
,MyClass
是type
,而{Python 3
会像这样改变type
功能的行为?在
改变的是,默认情况下,3.x中的所有类都是新样式的类。您的Python2类不是从
object
继承的,因此Python认为它是一个旧样式的类。在在2.7.5中:
相关问题 更多 >
编程相关推荐