Классы старого и нового стиля в Python 2.7?

Возможный дубликат:
Старый стиль и новые классы стиля в Python

Каково текущее состояние дел с классами нового и старого стиля в Python 2.7? Я не часто работаю с Python, но смутно помню эту проблему. Документация, кажется, не затрагивает проблему вообще: Учебник по Python: Классы. Мне все еще нужно беспокоиться об этом? В общем, я должен объявить мои классы как:

class MyClass:
    pass

или же?

class MyClass(object):
    pass

2 ответа

Решение

Всегда подкласс "объект". Это новые классы стиля.

  • Вы готовы к Python 3 таким образом.

  • Вещи как .super() работать должным образом, если они вам нужны.

Вы должны всегда использовать новые классы стиля. Классы нового стиля являются частью усилий по объединению встроенных типов и пользовательских классов в языке программирования Python.

Новые классы стиля могут предложить несколько вещей, таких как:

  • Свойства: атрибуты, которые определены методами get / set
  • Статические методы и методы класса
  • Новый хук getattribute, который, в отличие от getattr, вызывается для каждого доступа к атрибуту, а не только тогда, когда атрибут не может быть найден в экземпляре
  • Дескрипторы: протокол для определения поведения доступа к атрибутам через объекты
  • Переопределение конструктора new
  • Метаклассы

Источник.

Другие вопросы по тегам