В объявлении класса python я могу объявить класс несколькими способами. В чем разница между следующими образцами?
class MyClass:
def __init__(self)
pass
class MyClass(object):
def __init__(self)
pass
В объявлении класса python я могу объявить класс несколькими способами. В чем разница между следующими образцами?
class MyClass:
def __init__(self)
pass
class MyClass(object):
def __init__(self)
pass
Второй способ создает класс "нового стиля". По общему признанию, документации немного не хватает, как упоминалось в нескольких местах на веб-сайте python Руководство по Python 3.3 и здесь. Также есть эссе, описывающее их дизайн, написанный создателем Python (Гвидо ван Россум ), но это не строго документация.
Второе объявление создает класс нового стиля. Класс нового стиля является производным от встроенного типа, в данном случае object
. Это было введено в Python 2.2 для унификации классов и типов. Для обратной совместимости классы старого стиля по-прежнему используются по умолчанию.
Дополнительное чтение: http://docs.python.org/release/2.2.3/whatsnew/sect-rellinks.html