对象声明在python类中意味着什么,我应该使用它吗?

Pax*_*ell 8 python oop inheritance

示例#1:

class Person(object):
    pass
Run Code Online (Sandbox Code Playgroud)

例子#2:

class Person:
    pass
Run Code Online (Sandbox Code Playgroud)

对象声明有什么作用?你应该用吗?我有两个程序都有这两个程序,并不知道它正在制造的差异.如果有人能解释这个概念请.

unu*_*tbu 14

在Python2中,声明object为基类使该类成为新式类.否则,它是一个"经典"类.差异在于

  • 属性仅适用于新式类

  • 新式类有这个mro方法

  • 新式类具有许多经典类缺少的属性

    In [288]: class Foo: pass
    In [289]: dir(Foo) 
    Out[289]: ['__doc__', '__module__']
    
    In [290]: class Bar(object): pass
    In [291]: dir(Bar) 
    Out[291]:  ['__class__',  '__delattr__',     '__dict__',  '__doc__',  '__format__',  '__getattribute__',     '__hash__',  '__init__',  '__module__',  '__new__',  '__reduce__',     '__reduce_ex__',  '__repr__',  '__setattr__',  '__sizeof__',     '__str__',  '__subclasshook__',  '__weakref__']
    
    Run Code Online (Sandbox Code Playgroud)

Python2中保留经典类仅用于向后兼容.您定义的所有自定义类都应该是新式的.

在Python3中,所有类都是新式的,因此不需要在那里显式声明.