Классы старого и нового стиля в 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
- Метаклассы