Skip to content

Implement javascript style inheritance in Python

License

Notifications You must be signed in to change notification settings

numlck/python-prototype

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 

Repository files navigation

#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

About

Implement javascript style inheritance in Python

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%