| 30 | pass |
| 31 | |
| 32 | def __repr__(self): |
| 33 | try: |
| 34 | init_sig = inspect.signature(self.__init__) |
| 35 | init_args = list(init_sig.parameters.keys()) |
| 36 | except AttributeError: |
| 37 | # Python 2.7 |
| 38 | argspec = inspect.getargspec(self.__init__) |
| 39 | init_args = [a for a in argspec.args if a != "self"] |
| 40 | |
| 41 | return "{cls}({attrs})\n{doc}".format( |
| 42 | cls=self.__class__.__name__, |
| 43 | attrs=", ".join("{}={!r}".format(k, self.__dict__[k]) for k in init_args), |
| 44 | doc=self.__doc__, |
| 45 | ) |
| 46 | |
| 47 | def __hash__(self): |
| 48 | # Constructor args fully define uniqueness |