Разница в объявлении класса Python

В объявлении класса python я могу объявить класс несколькими способами. В чем разница между следующими образцами?

class MyClass:
 def __init__(self)
     pass


class MyClass(object):
   def __init__(self)
     pass

person Arseny    schedule 03.01.2012    source источник
comment
Важный вопрос, но тот, на который, очевидно, можно было бы ответить «самообслуживание», прочитав документы.   -  person wim    schedule 03.01.2012


Ответы (2)


Второй способ создает класс "нового стиля". По общему признанию, документации немного не хватает, как упоминалось в нескольких местах на веб-сайте python Руководство по Python 3.3 и здесь. Также есть эссе, описывающее их дизайн, написанный создателем Python (Гвидо ван Россум ), но это не строго документация.

person Alex Leach    schedule 03.01.2012

Второе объявление создает класс нового стиля. Класс нового стиля является производным от встроенного типа, в данном случае object. Это было введено в Python 2.2 для унификации классов и типов. Для обратной совместимости классы старого стиля по-прежнему используются по умолчанию.

Дополнительное чтение: http://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html

person Russell Dias    schedule 03.01.2012
comment
FTR, в Python 3 нет разницы между этими двумя синтаксисами. - person Michael Merickel; 03.01.2012