我试图让python2程序在python3中工作,它有以下的元类定义。在Py2上很好用。最好的方法是什么让它同时兼容py2和py3?在
它在单元测试中失败了:try:
raise Actor.DoesNotExist
except Actor.DoesNotExist:
pass
失败是:
^{pr2}$
基本元类定义是:class MetaDocument(type):
def __new__(meta,name,bases,dct):
class DoesNotExist(BaseException):
pass
class MultipleDocumentsReturned(BaseException):
pass
dct['DoesNotExist'] = DoesNotExist
dct['MultipleDocumentsReturned'] = MultipleDocumentsReturned
class_type = type.__new__(meta, name, bases, dct)
if not class_type in document_classes:
if name == 'Document' and bases == (object,):
pass
else:
document_classes.append(class_type)
return class_type
class Document(object):
__metaclass__ = MetaDocument