【发布时间】:2011-05-27 15:51:25
【问题描述】:
我对 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__'
- 为什么内置事物的类型和类(例如此处列出)相同但用户类/类型不同?
- 不是每个类都是其他类的实例吗(如 Java 中的 Class)?为什么用户定义的类没有
__class__?
任何可以澄清这种行为的解释/进一步阅读将不胜感激。 TIA。
【问题讨论】:
-
你应该用
class A(object)定义你的类。然后你会得到<class '__main__.A'>fortype(a)。