В чем разница между «классом A:» и «классом A (объект):» в Python? - PullRequest
1 голос
/ 27 декабря 2010

Какая разница между

class A:
    pass

и

class B(object):
    pass

? Почему-то в методах я не могу использовать super(A, self), но super(B, self) прекрасно работает. Я думаю, что в Py3k такой особенности нет:)

Ответы [ 4 ]

6 голосов
/ 27 декабря 2010

В 2.x последний создает новый стиль класса .В 3.x оба имеют одинаковый эффект, так как классы старого стиля были удалены.

6 голосов
/ 27 декабря 2010

Первый класс в старом стиле.Второй класс в новом стиле.См. http://docs.python.org/tutorial/classes.html#multiple-inheritance для хорошего обсуждения разницы.super() работает только с классами нового стиля.http://docs.python.org/library/functions.html#super

1 голос
/ 27 декабря 2010

Как уже говорилось, во втором случае создается класс в новом стиле, а в первом - класс в старом стиле (не рекомендуется!).

Классы нового стиля, созданные для снятия ограничения старых стилей: классы старого стиля не могут наследоваться от встроенных типов. С классами нового стиля вы можете наследовать от встроенных типов; фактически все встроенные типы являются производными от «объекта»:

>>> list.__mro__
(<type 'list'>, <type 'object'>)
1 голос
/ 27 декабря 2010

Класс B - это новый класс стиля http://www.python.org/doc/newstyle/

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