Я получил следующий класс:
class ConstraintFailureSet(dict, Exception) :
"""
Container for constraint failures. It act as a constraint failure itself
but can contain other constraint failures that can be accessed with a dict syntax.
"""
def __init__(self, **failures) :
dict.__init__(self, failures)
Exception.__init__(self)
print isinstance(ConstraintFailureSet(), Exception)
True
raise ConstraintFailureSet()
TypeError: exceptions must be classes, instances, or strings (deprecated), not ConstraintFailureSet
Какого черта ?
И хуже всего то, что я не могу попробовать super(), так как Exception - это старый класс...
РЕДАКТИРОВАТЬ: И да, я пытался переключить порядок наследования/инициализации.
EDIT2: я использую CPython 2.4 на Ubuntu8.10. Вы, новенькие, знаете, полезна ли такая информация ;-). Так или иначе, эта маленькая загадка закрыла рот трем моим коллегам. Ты был бы моим лучшим другом дня...