objectfactory is a python package to easily implement the factory design pattern for object creation, serialization, and polymorphism
Project description
py-object-factory
objectfactory is a python package to easily implement the factory design pattern for object creation, serialization, and polymorphism
- designed to support polymorphism
- integrates seamlessly with marshmallow and other serialization frameworks
- schema inherent in class definition
- load any object with a generic interface
- serialize objects to JSON
Example
Simple shapes example:
import objectfactory
@objectfactory.register
class Square( objectfactory.Serializable ):
side = objectfactory.Field()
def get_area( self ):
return self.side * self.side
@objectfactory.register
class Triangle( objectfactory.Serializable ):
base = objectfactory.Field()
height = objectfactory.Field()
def get_area( self ):
return 0.5 * self.base * self.height
serialized_data = [
{"_type": "Square", "side": 2.0},
{"_type": "Triangle", "base": 1.75, "height": 2.50},
{"_type": "Square", "side": 1.5},
]
for data in serialized_data:
shape = objectfactory.create( data )
print( 'class type: {}, shape area: {}'.format( type( shape ), shape.get_area() ) )
Output:
class type: <class '__main__.Square'>, shape area: 4.0
class type: <class '__main__.Triangle'>, shape area: 2.1875
class type: <class '__main__.Square'>, shape area: 2.25
More examples
See more advanced examples here
Install
Use pip for installation
pip install objectfactory
Documentation
Read the full documentation at objectfactory.readthedocs.io
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
objectfactory-0.1.0.tar.gz
(11.3 kB
view hashes)
Built Distribution
Close
Hashes for objectfactory-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7c14dc69c769795021b1472d19c136da0ce7e025f21fdcf2d3fb81329a79662 |
|
MD5 | ff984bb02c460ddea52457ac19cd69cb |
|
BLAKE2b-256 | 10c4fa29c6e6081c351d3054c32c73e7bdd8ad1d649f5cd4d4c08c4d576936cb |