pretty_repr
is a package that allows you to create clear and informative methods for your own classes in Python.
Before you begin, ensure you have installed the latest version of Python.
To install pretty_repr
, follow these steps:
Linux and macOS:
pip3 install pretty-repr
Windows:
pip install pretty-repr
There are will be examples of how to use pretty_repr
.
- The
get_representation
function requires an instance of some class as parameter and returns its string representation:
>>> from pretty_repr import get_representation
>>> class A:
... def __init__(self, a, b, c, d=0):
... self.a = a
... self.__b = b
... self._c = c
... self.d = d
...
>>> example_1 = A(1, 2, 3)
>>> print(get_representation(example_1))
A(a=1, b=2, _c=3, d=0)
- Run the following to exclude some parameters from the representation:
>>> print(get_representation(example_1, excluded={'a', '_c'}))
A(b=2, d=0)
- If a parameter is iterable is represented in accordance to its
__repr__
method:
>>> import numpy as np
>>> example_2 = A((1, 2), [3, 4], {5, 6}, np.zeros(3))
>>> print(get_representation(example_2))
A(a=(1, 2), b=[3, 4], _c={5, 6}, d=array([0., 0., 0.]))
- Inheritor representation includes all parameters of the ancestor as well as its own parameters:
>>> from pretty_repr import get_representation
>>> class B(A):
... def __init__(self, e, f, h=1, **kwargs):
... super().__init__(**kwargs)
... self.e = e
... self.__f = f
... self.h = h
...
>>> example_3 = B(a=1, b=2, c=3, e=4, f=5)
>>> print(get_representation(example_3))
B(a=1, b=2, _c=3, d=0, e=4, f=5, h=1)
- This representation includes private attributes of the ancestor. Run the following to exclude it from representation:
>>> example_3._A__b
2
>>> print(get_representation(example_3, ancestor_private_attributes=False))
B(a=1, _c=3, d=0, e=4, f=5, h=1)
The RepresentableObject
class is the class which __repr__
method returns
get_representation
function result:
>>> from pretty_repr import RepresentableObject
>>> print(get_representation(RepresentableObject()))
RepresentableObject()
>>> print(repr(RepresentableObject()))
RepresentableObject()
You can use class inherited from RepresentableObject
instead of __repr__
method implementation:
>>> class C(RepresentableObject):
... def __init__(self, a, b, c, d=0):
... self.a = a
... self.__b = b
... self._c = c
... self.d = d
...
>>> example_1 = C(1, 2, 3)
>>> example_1
C(a=1, b=2, _c=3, d=0)
Define property excluded_attributes_for_repr
to exclude some parameters from representation:
>>> class D(C):
... def __init__(self, e, f, h=1, **kwargs):
... super().__init__(**kwargs)
... self.e = e
... self.__f = f
... self.h = h
... @property
... def excluded_attributes_for_repr(self):
... return {'f', 'h'}
...
>>> example_4 = D(a=1, b=2, c=3, e=4, f=5)
>>> example_4
D(a=1, b=2, _c=3, d=0, e=4)
To contribute to pretty_repr
, follow these steps:
- Fork this repository.
- Create a branch:
git checkout -b <branch_name>
. - Make your changes and commit them:
git commit -m '<commit_message>'
- Push to the original branch:
git push origin <project_name>/<location>
- Create the pull request.
Alternatively see the GitHub documentation on creating a pull request.
If you want to contact me you can reach me at albertfarhutdinov@gmail.com
.
This project uses the following license: MIT License.