old-style and new-style classes in Python 2.7? [du

2019-01-25 03:04发布

Possible Duplicate:
Old style and new style classes in Python

What is the current state of affairs with new-style and old-style classes in Python 2.7? I don't work with Python often but I vaguely remember the issue. The documentation doesn't seem to mention the issue at all: The Python Tutorial: Classes. Do I still need to worry about this? In general should I declare my classes like:

class MyClass:
    pass

or?

class MyClass(object):
    pass

2条回答
叼着烟拽天下
2楼-- · 2019-01-25 03:24

Always subclass "object". Those are new style classes.

  • You are ready for python 3 that way.

  • Things like .super() work properly that way, should you need them.

查看更多
贼婆χ
3楼-- · 2019-01-25 03:24

You should always use new style classes. New-style classes are part of an effort to unify built-in types and user-defined classes in the Python programming language.

New style classes have several things to offer such as:

  • Properties: Attributes that are defined by get/set methods
  • Static methods and class methods
  • The new getattribute hook, which, unlike getattr, is called for every attribute access, not just when the attribute can’t be found in the instance
  • Descriptors: A protocol to define the behavior of attribute access through objects
  • Overriding the constructor new
  • Metaclasses

Source.

查看更多
登录 后发表回答