Подтвердить что ты не робот

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

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

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

class MyClass:
    pass

или

class MyClass(object):
    pass
4b9b3361

Ответ 1

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

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

  • Такие вещи, как .super(), работают должным образом, если они вам понадобятся.

Ответ 2

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

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

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

Источник