为什么继承对象类型

xia*_*012 7 python inheritance object python-2.7

在我过去的一个问题中,一个回答者告诉我,当你想要创建的类是从头开始时,从对象继承是更好的,这不需要从其他类继承.

例如,像我一直做的那样:

class my_class:
     "a class inherits from nothing"
     def __init__(self):
         pass
Run Code Online (Sandbox Code Playgroud)

对于他或她的建议:

class suggested_class(object):
     "a class inherits from object type"
     def __init__(self):
         pass
Run Code Online (Sandbox Code Playgroud)

我对这两种方法的好处或缺点感到困惑.

问题1:

那么你的想法是什么,从对象类型继承还是什么都没有?

Mar*_*tos 5

从无到有继承创建了一个旧式类,它对新式类有不同的行为.我不记得刚才的细节(参见这里的解释),但作为一般规则,没有理由支持旧式类,所以你应该总是从对象继承(如果没有其他的话).

  • 拥有新样式类的原因是1:旧样式类的所有实例的类型是`classobj`,这不是很有趣,2:旧样式类的方法解析顺序被打破以进行多重继承.修复这些问题中的一个或两个会使许多现有代码停止工作,所以最简单的方法就是创建一个不同类的类,即`object`. (4认同)
  • @Token另外,在Python 3中,所有类都回到了新式,而没有专门继承自`object`. (2认同)