A mix-in that provides __repr__() from constructor arguments.
Project description
ctorrepr
A mix-in that provides __repr__() from constructor arguments.
Free software: MIT license
Documentation: https://ctorrepr.readthedocs.io.
Usage
To use, simply inherit from ~ctorrepr.CtorRepr then implement its ~ctorrepr.CtorRepr._collect_repr_args() to match your existing __init__() method:
>>> from ctorrepr import CtorRepr >>> class X(CtorRepr): ... def __init__(self, x1='x1', x2='x2', *poargs, **kwargs): ... super().__init__(*poargs, **kwargs) ... self.x1 = x1 ... self.x2 = x2 ... def _collect_repr_args(self, poargs, kwargs): ... super()._collect_repr_args(poargs, kwargs) ... poargs[:0] = self.x1, self.x2 >>> class Y(CtorRepr): ... def __init__(self, *y, **kwargs): ... super().__init__(**kwargs) ... self.y = y # completely consumes positional args ... def _collect_repr_args(self, poargs, kwargs): ... super()._collect_repr_args(poargs, kwargs) ... poargs[:0] = self.y >>> class Z(CtorRepr): ... def __init__(self, *poargs, zk='zk', **kwargs): ... super().__init__(*poargs, **kwargs) ... self.zk = zk ... def _collect_repr_args(self, poargs, kwargs): ... super()._collect_repr_args(poargs, kwargs) ... kwargs.update(zk=self.zk) >>> class W(X, Y, Z): ... def __str__(self): ... return repr(self) >>> print(' '.join(t.__name__ for t in W.mro())) W X Y Z CtorRepr object >>> print(W()) W('x1', 'x2', zk='zk') >>> print(W(24)) W(24, 'x2', zk='zk') >>> w = W(24, 25, 'y1', 'y2') >>> w.y ('y1', 'y2') >>> print(w) W(24, 25, 'y1', 'y2', zk='zk') >>> print(W(zk=100)) W('x1', 'x2', zk=100)
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.1.0 (2017-07-31)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ctorrepr-0.1.2.tar.gz
(11.1 kB
view hashes)
Built Distribution
Close
Hashes for ctorrepr-0.1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 024a77115c05283e7629216e687276cefd68ba1cba6352c2cf23280e37f2b53a |
|
MD5 | 74778b46e042829796b59f38f7ec30f9 |
|
BLAKE2b-256 | dc0d54c792598904da0e5c176992f2595e4fab7ed40c22c643d1874514b52bf1 |