Skip to main content

A lightweight, decoupled wrapper for dynamic class assignment.

Project description

# borg_pod Python design pattern and module.

The Borg Pod pattern provides an easy method for creating dynamic and decoupled classes. Instead of imposing developer
overhead of linking class implementations, designing a state machine, referring to the correct pointers for the owners
of each attribute / method, and debugging the system - you could just put a wrapper above your classes and be done with
it.

## Use

You've imported the module? Okay, this is scary, so here we go. Let's say you have some classes you want to be able to
switch an instance between:

class SomeClassA(object):
def __init__(self):
pass

def my_method(self):
print("I AM SOME CLASS A")


class OtherClassB(object):
def __init__(self):
print("HOLD ON, I AIN'T SO QUIET.")

def my_method(self):
print("...where am I again?")

def a_unique_method(self, to_print):
print(to_print)


All you would do is add the @assimilate decorator above both:


@my_library.assimilate
class SomeClassA
...


@my_library.assimilate
class OtherClassB
...


Creating and converting an instance of one would look like:


my_first_unique = SomeClassA()
my_second_unique = SomeClassA()
my_third_unique = OtherClassB()
assert my_first_unique is not my_second_unique and my_third_unique is not my_first_unique

first_b = SomeClassB(my_first_unique)
second_b = SomeClassB(my_second_unique)
third_b = SomeClassB(my_third_unique)
assert (first_b is my_first_unique and second_b is my_second_unique and third_b is my_third_unique
and first_b is not third_b and first_b is not second_b)

And that's it! More advanced usage involves the @resist decorator, to avoid the self reference injection - but most
devs don't need to worry about that. You can find more thorough documentation inside of the module. Classes with
the @assimilate decorator can be subclassed and can be subclasses of other decorated or non-decorated classes.

## Copyright

borg_pod module by Andrew M. Hogan. (borg_pod © 2018 Hogan Consulting Group)

## License

Licensed under the Apache License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for borg_pod, version 1.0.0
Filename, size File type Python version Upload date Hashes
Filename, size borg_pod-1.0.0.tar.gz (13.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page