attribute defaults that are containers are a copy

This is simpler way to prevent persistent containers across instances
of classes that use field attributes
This commit is contained in:
Brian Coca 2015-12-09 08:38:53 -08:00
parent 2bfb13bfb3
commit ae2447df91

View file

@ -19,6 +19,7 @@
from __future__ import (absolute_import, division, print_function)
__metaclass__ = type
from copy import deepcopy
class Attribute:
@ -32,6 +33,11 @@ class Attribute:
self.priority = priority
self.always_post_validate = always_post_validate
if default is not None and self.isa in ('list', 'dict', 'set'):
self.default = deepcopy(default)
else:
self.default = default
def __eq__(self, other):
return other.priority == self.priority