ctorrepr module¶
Main module.
-
class
ctorrepr.
CtorRepr
[source]¶ Bases:
object
A mix-in that provides
object.__repr__()
from ctor arguments.- Examples::
>>> 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)
-
_collect_repr_args
(poargs, kwargs)[source]¶ Collect all the args and kwargs for the constructor.
Used by
__repr__()
.Subclasses wishing to include constructor arguments in the repr output must implement this method. The implementation should first thunk to super(), then update poargs and kwargs.
Parameters: