Различие между типом (obj) и obj. __ класс __

Большинство вопросов о собеседовании при программировании бессмысленны. Особенно те, которые выяснили программисты.

Это частый случай, по крайней мере, согласно моим & amp; Мой опыт друзей, где надутый программист, спрашивает вас о хитрости, за которую он потратил недели на поиски. Самое смешное в этом то, что вы вернетесь домой и погуглите в течение минуты. Как будто они часто пытаются избить вас своим сложным оружием , вместо того, чтобы проверять, будете ли вы комплексным, прагматичным командным игроком для работы.

Подобная глупость в IMO возникает, когда вас спрашивают о высокодоступных основах, например: «Ой, подождите, позвольте мне посмотреть, можете ли вы использовать псевдокод этого insert_name_here -алгоритма на листе бумаги (так! )». Мне действительно нужно помнить это при подаче заявления на работу по программированию высокого уровня? Должен ли я эффективно решать проблемы или головоломки?

44
задан Charles Merriam 12 July 2013 в 00:46
поделиться

2 ответа

type (obj) и type .__ class __ не работают одинаково для классов старого стиля:

>>> class a(object):
...     pass
...
>>> class b(a):
...     pass
...
>>> class c:
...     pass
...
>>> ai=a()
>>> bi=b()
>>> ci=c()
>>> type(ai) is ai.__class__
True
>>> type(bi) is bi.__class__
True
>>> type(ci) is ci.__class__
False
14
ответ дан 26 November 2019 в 22:03
поделиться

Классы старого стиля - это проблема, вздох:

>>> class old: pass
... 
>>> x=old()
>>> type(x)
<type 'instance'>
>>> x.__class__
<class __main__.old at 0x6a150>
>>> 

Не проблема в Python 3, поскольку все классы теперь в новом стиле; -).

В Python 2 класс имеет новый стиль, только если он наследуется от другого класса нового стиля (включая объект и различные встроенные типы, такие как dict , список , set , ...) или неявно или явно устанавливает __ метакласс __ в тип .

30
ответ дан 26 November 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: