2014-03-31 2 views
4

В Python 2 классы должны быть явно определены как подклассы объекта. В Python 3 это будет по умолчанию.что такое различие между определением класса

>>> class A(object): 
    pass 

>>> class B(): 
    pass 

>>> type(B) 
<type 'classobj'> 
>>> type(A) 
<type 'type'> 

Я использую Python 2.7 и, как я знаю, в 2,7 class наследуется от object.

+1

читайте это для объяснения новых классов стиля http://stackoverflow.com/questions/4015417/python-class-inherits-object? – dannymilsom

+0

Я уверен, что 'class' наследует от' object' в python> = 3.0, но не 2.7. Вы все еще должны явно наследовать от 'object' в python 2.x. – SethMMorton

ответ

4

Это так называемый «объект нового стиля», представленный в python 2.2.

Объекты нового стиля имеют другую объектную модель для классических объектов, а некоторые вещи не будут работать должным образом с объектами старого стиля, например, super(), @property и дескрипторы.

Подробнее об этом в известном вопросе:

Пожалуйста, обратитесь к:

Кроме того, обратите внимание, что есть разный между ними только в Python 2. В Python 3 у вас нет никакой разницы между этими двумя типами объявлений (я знаю, что ваш вопрос касается Python 2, всего лишь небольшая заметка).

+0

Какой новый объект? – tjati

+0

@omeinusch: первый, 'A' –

Смежные вопросы