def __init__(self, *args, **kwargs):
classes = list(self._class_defs())
if len(classes) == 0 or self.__class__ in self._class_defs():
return super(AnyOfObject, self).__init__(*args, **kwargs)
for cls in self._class_defs():
# TODO: add a second pass where we allow additional properties?
if all(key in cls.class_traits() for key in kwargs):
try:
cls(*args, **kwargs)
except (T.TraitError, ValueError):
pass
else:
assert issubclass(cls, JSONHasTraits)
self.__class__ = cls
return super(JSONHasTraits, self).__init__(*args, **kwargs)
raise T.TraitError("{cls}: initialization arguments not "
"valid in any wrapped classes"
"".format(cls=self.__class__.__name__))
评论列表
文章目录