Skip to content

Latest commit

 

History

History
55 lines (35 loc) · 1.24 KB

readme.md

File metadata and controls

55 lines (35 loc) · 1.24 KB

#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.

Usage

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()

Explicit Generation

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