question about __repr__ in a class - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: question about __repr__ in a class (/thread-41407.html) |
question about __repr__ in a class - akbarza - Jan-11-2024 hi the below code is in:https://realpython.com/python-mutable-vs-immutable-types/#techniques-to-control-mutability-in-custom-classes class Point: def __init__(self, x, y): self._x = x self._y = y @property def x(self): return self._x @property def y(self): return self._y def __repr__(self): return f"{type(self).__name__}(x={self.x}, y={self.y})"what does the last line do also what does the __repe__ method do? how can i use the __repr__ method? if it is omitted, does it cause any problems? thanks RE: question about __repr__ in a class - deanhystad - Jan-11-2024 Objects have two string representations: __str__ is the pretty one, and __repr__ is the smart one. __str__ is used when you call str() or print() an object. __repr__ is used when you call repr() or when you print an object as part of a collection (list, dictionary, set, tuple). Have you tried omitting the method to see what happens? What do you think will happen? RE: question about __repr__ in a class - Gribouillis - Jan-11-2024 Don't forget to use the search field in the Python documentation RE: question about __repr__ in a class - akbarza - Jan-12-2024 (Jan-11-2024, 12:14 PM)deanhystad Wrote: Objects have two string representations: __str__ is the pretty one, and __repr__ is the smart one. __str__ is used when you call str() or print() an object. __repr__ is used when you call repr() or when you print an object as part of a collection (list, dictionary, set, tuple). hi i omitted it, but i did not see any change. what can i write or add to the above code too see the changes occure with ommitting the __repr__ method? thanks again for reply RE: question about __repr__ in a class - DeaD_EyE - Jan-12-2024 If the method __str__ is not available, then __repr__ is called instead.If you just want a class with some variables and a nice representation, you could use dataclasses instead: import math from dataclasses import dataclass @dataclass class PointD: x: int y: int @property def alpha(self): """ alpha for polar coordinates """ return math.degrees(math.atan2(self.y, self.x)) @property def hypot(self): """ Length of hypot """ return math.hypot(self.x, self.y) @property def polar(self): """ Poloar coordinates """ return self.alpha, self.hypot @classmethod def from_ploar(cls, polar): """ Create a point from ploar coordinates polar := (alpha, hypot) """ alpha = math.radians(polar[0]) return cls(math.cos(alpha) * polar[1], math.sin(alpha) * polar[1]) p2 = PointD(7, 9) print(p2) print(f"{p2!s}") print(f"{p2!r}") print(f"{p2.alpha}") print(f"{p2.hypot}") print(f"{p2.polar}") print(PointD.from_ploar(p2.polar))
|