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:
parent
2bfb13bfb3
commit
ae2447df91
1 changed files with 6 additions and 0 deletions
|
@ -19,6 +19,7 @@
|
||||||
from __future__ import (absolute_import, division, print_function)
|
from __future__ import (absolute_import, division, print_function)
|
||||||
__metaclass__ = type
|
__metaclass__ = type
|
||||||
|
|
||||||
|
from copy import deepcopy
|
||||||
|
|
||||||
class Attribute:
|
class Attribute:
|
||||||
|
|
||||||
|
@ -32,6 +33,11 @@ class Attribute:
|
||||||
self.priority = priority
|
self.priority = priority
|
||||||
self.always_post_validate = always_post_validate
|
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):
|
def __eq__(self, other):
|
||||||
return other.priority == self.priority
|
return other.priority == self.priority
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue