【问题标题】:Python classes explainedPython 类解释
【发布时间】:2013-11-08 10:35:22
【问题描述】:

为什么 Python 将这些类视为不同的数据类型?

>>> class A:
...    pass
...
>>> class B(object):
...     pass
...
>>> a = A()
>>> b = B()
>>> type(A)
<type 'classobj'>
>>> type(B)
<type 'type'>
>>> type(a)
<type 'instance'>
>>> type(b)
<class '__main__.B'>

我很新。所以我真的不明白为什么它将所有这些都视为不同的数据类型。它们都是类,所以看起来它们应该是相同的。

【问题讨论】:

标签: python class object types instance


【解决方案1】:

您使用的是 Python 2。

Python 2 允许不继承自 object 的类,这是在 2.2 版中添加的。它们在某些方面与“新型类”的行为不同,您已经找到了一些。

除了保持向后兼容性之外,没有其他原因会导致不同的行为,即确保为旧式类编写的代码在 Python 2 的新版本中继续工作。

Python 3 不向后兼容,也没有旧式类。如果您在 Python 3 中编写了相同的代码,那么 A 将继承自 object,即使您没有明确说明。

【讨论】:

    猜你喜欢
    • 2021-10-22
    • 2010-12-01
    • 2021-08-06
    • 2019-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多