|
@@ -1,35 +1,37 @@
|
|
|
-from copy import deepcopy
|
|
|
+import copy
|
|
|
|
|
|
|
|
|
class Prototype:
|
|
|
def __init__(self):
|
|
|
- self._objs = {}
|
|
|
+ self._objects = {}
|
|
|
|
|
|
- def registerObject(self, name, obj):
|
|
|
- """
|
|
|
- register an object.
|
|
|
- """
|
|
|
- self._objs[name] = obj
|
|
|
+ def register_object(self, name, obj):
|
|
|
+ """Register an object"""
|
|
|
+ self._objects[name] = obj
|
|
|
|
|
|
- def unregisterObject(self, name):
|
|
|
- """unregister an object"""
|
|
|
- del self._objs[name]
|
|
|
+ def unregister_object(self, name):
|
|
|
+ """Unregister an object"""
|
|
|
+ del self._objects[name]
|
|
|
|
|
|
def clone(self, name, **attr):
|
|
|
- """clone a registered object and add/replace attr"""
|
|
|
- obj = deepcopy(self._objs[name])
|
|
|
+ """Clone a registered object and update inner attributes dictionary"""
|
|
|
+ obj = copy.deepcopy(self._objects.get(name))
|
|
|
obj.__dict__.update(attr)
|
|
|
return obj
|
|
|
|
|
|
|
|
|
-if __name__ == '__main__':
|
|
|
+def main():
|
|
|
class A:
|
|
|
- pass
|
|
|
+ pass
|
|
|
|
|
|
a = A()
|
|
|
prototype = Prototype()
|
|
|
- prototype.registerObject("a", a)
|
|
|
- b = prototype.clone("a", a=1, b=2, c=3)
|
|
|
+ prototype.register_object('a', a)
|
|
|
+ b = prototype.clone('a', a=1, b=2, c=3)
|
|
|
|
|
|
print(a)
|
|
|
print(b.a, b.b, b.c)
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == '__main__':
|
|
|
+ main()
|