sas*_*uke 18 python types class
我对Python中的类型和类有点困惑.例如,以下REPL对话让我困惑:
>>> class A: pass
...
>>> a = A()
>>> type(a)
<type 'instance'>
>>> a.__class__
<class __main__.A at 0xb770756c>
>>> type([])
<type 'list'>
>>> [].__class__
<type 'list'>
>>> type(list)
<type 'type'>
>>> list.__class__
<type 'type'>
>>> type(A)
<type 'classobj'>
>>> A.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class A has no attribute '__class__'
Run Code Online (Sandbox Code Playgroud)
__class__用户定义的类?任何解释/进一步阅读可以澄清这种行为将非常感激.TIA.
whe*_*ies 15
您遇到了新样式类与经典类的不同行为.如需进一步阅读,请阅读:Python数据模型.具体阅读有关类的部分以及新样式和经典类之间的区别.
尝试在REPL中输入以下内容:
class A: pass
class B(object): pass
Run Code Online (Sandbox Code Playgroud)
你会看到你得到不同的结果.在这里,您将处理新样式和旧样式类之间的区别.在这里使用Python 2.6.1是我得到的:
> type(A)
<type "classobj">
> type(B)
<type "type">
Run Code Online (Sandbox Code Playgroud)
它告诉您列表是新样式类而不是旧样式类.我们还可以使用以下内容list:
> type(list)
<type "type">
Run Code Online (Sandbox Code Playgroud)
和我们的class B(object): pass结果一样.并且
> c = []
> type(c)
<type "list">
Run Code Online (Sandbox Code Playgroud)
它告诉你关于对象的实例而不是它的定义.