def clsvisit_JSONHasTraits(self, cls, dct, *args, **kwargs):
try:
obj = cls()
except TypeError: # Argument missing
obj = cls('')
additional_traits = cls._get_additional_traits()
# Extract all other items, assigning to appropriate trait
reverse_name_map = {v:k for k, v in obj._trait_name_map.items()}
for schema_key, val in dct.items():
if schema_key in obj._metadata:
obj._metadata[schema_key] = val
else:
trait_key = reverse_name_map.get(schema_key, schema_key)
subtrait = obj.traits().get(trait_key, additional_traits)
if not subtrait:
raise T.TraitError("trait {0} not valid in class {1}"
"".format(trait_key, cls))
obj.set_trait(trait_key,
self.visit(subtrait, val, *args, **kwargs))
return obj
评论列表
文章目录