Skip to main content

A simple way to inject composition through inheritance syntax.

Project description

PyCompose

A simple way to inject composition through inheritance syntax.

Inspirations

The following links served as inpiration during the writing of this, and as a in-depth explanation of what actually is composition and its benefits and drawbacks versus inheritance.

Explanation

From the inspirations one can easily see that an older implementation of compositional forwarding exists (forwardable) so why would I do this to myself? In short, I didn't like the syntax introduced by it. I find the syntax provided by this implementation a bit easier to understand as I find adding things that related to properties of a class inside the brackets in the class statement the most logical.

Usage

from pycompose import Compose


class A:
    test1 = "123"

    def hello(self):
        print("A")

    def __repr__(self):
        return "<A>"


class B:
    test2 = "456"

    def hello(self):
        print("B")

    def __repr__(self):
        return "<B>"


class C(
    Compose(A, "test1", ("hello", "helloA")),
    Compose(B, "test2", ("hello", "helloB"), name="b_object"),
):
    ...


c = C()
print(c.test1 + c.test2)  # > 123456
c.helloA()                # > A
c.helloB()                # > B
print(c._a, c.b_object)   # > <A> <B>

Disclaimer

Please do note that this project is but a small abstraction for something that can easily be achieved only a few more lines of hand written code. As such I am aware of the fact that this may seem pretty useless to some people.

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

pycompose-1.0.tar.gz (2.8 kB view details)

Uploaded Source

Built Distribution

pycompose-1.0-py3-none-any.whl (3.8 kB view details)

Uploaded Python 3

File details

Details for the file pycompose-1.0.tar.gz.

File metadata

  • Download URL: pycompose-1.0.tar.gz
  • Upload date:
  • Size: 2.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for pycompose-1.0.tar.gz
Algorithm Hash digest
SHA256 0ded4deafc9eeb589bab33351fcde1a49abe2e02dbb74f21a87061d25756b4f6
MD5 502562213774b0191bd641fdb55cec1b
BLAKE2b-256 4c7750ccc3016145b406dbd29bf4969475e372a502d98dfe2f6fa295947557f0

See more details on using hashes here.

File details

Details for the file pycompose-1.0-py3-none-any.whl.

File metadata

  • Download URL: pycompose-1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for pycompose-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fc308db214dccaef6abfb374b728a583b4d1226359c6e2343193c6b48848a874
MD5 589a1f622ed18e96c23674f9452820a2
BLAKE2b-256 1b515402507df531dd4dc990af5d75155464f34cdab2086a52fcc6881e0ed8c4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page