#Prototypal Inheritance for Python
Implement javascript prototypal inheritance in python. This implementation will allow you to create new prototypes on the fly, or set prototypes for classes.
You can use it to make lightweight children from an existing object.
obj = Parent()
obj_child = prototype(obj)
You can use it to make static prototypes for classes.
obj = Parent()
@prototype(obj)
class Child(object):
pass
obj2 = Child()
In some rare cases you must explicitly force a clone or a decorator to
be created. If the object contains a new
property you must
explicitly call .new to force a clone to be made.
obj = Parent()
obj.new = 1
obj_child = prototype(obj).new
If the object contains a __call__
property, you must explicitly
create a decorator with the extend=True keyword argument.
obj = Parent()
obj.__call__ = 1
@prototype(obj, extend=True)
class Child(object):
pass
##Nested Prototypes
Prototypes can extend prototypes as many levels as you want. One note, prototypes extending prototypes must use .new and extend=True.
obj = Parent()
child = prototype(obj)
grandchild = prototype(child).new
(c) 2011 Sauce Labs