Python 'объектный' тип и наследование - PullRequest
4 голосов
/ 09 октября 2009

В Python я могу определить класс 'foo' следующими способами:

class foo:
    pass

или

class foo(object):
    pass

Какая разница? Я попытался использовать функцию issubclass (foo, object), чтобы увидеть, возвращает ли она True для обоих определений классов. Это не так.

IDLE 2.6.3      
>>> class foo:
        pass

>>> issubclass(foo, object)
False
>>> class foo(object):
        pass

>>> issubclass(foo, object)
True

Спасибо.

Ответы [ 3 ]

9 голосов
/ 09 октября 2009

Наследование от object делает класс "классом нового стиля". Здесь обсуждается старый стиль против нового стиля: В чем разница между старым стилем и классами нового стиля в Python?

Как прокомментировал @CrazyJugglerDrummer ниже, в Python 3 все классы являются классами "нового стиля". В Python 3 следующие два объявления в точности эквивалентны:

class A(object):
    pass

class A:
    pass
2 голосов
/ 09 октября 2009

Старый стиль и новый стиль объекты ... они имеют различное поведение, например, в конструкторах или в порядке разрешения методов в множественном наследовании.

2 голосов
/ 09 октября 2009

Первый создает класс «старого стиля», который устарел и был удален в Python 3. Вы не должны использовать его в Python 2.x. См. Документацию для модели данных Python .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...