16.15. OOP Stringify About

  • str()

  • repr()

16.15.1. SetUp

>>> import datetime
>>>
>>> date = datetime.date(1969, 7, 21)

16.15.2. Str

>>> str(date)
'1969-07-21'
>>> print(date)
1969-07-21

16.15.3. Repr

>>> repr(date)
'datetime.date(1969, 7, 21)'
>>> date
datetime.date(1969, 7, 21)

16.15.4. Memory Address

>>> class User:
...     pass
...
>>> mark = User()

Printing user will display memory address of an object:

>>> print(mark)  
<__main__.User object at 0x1064f0f90>

CPython implementation of id() builtin function will return the same memory address of an object, but in decimal form. You can convert this to the hexadecimal form using hex() function.

>>> id(mark)  
4400811920
>>>
>>> hex(id(mark))  
'0x1064f0f90'

16.15.5. Use Case - 0x01

>>> from pprint import pprint
>>> class User:
...     def __init__(self, firstname, lastname):
...         self.firstname = firstname
...         self.lastname = lastname
>>>
>>> mark = User('Mark', 'Watney')
>>> melissa = User('Melissa', 'Lewis')
>>> rick = User('Rick', 'Martinez')
>>>
>>> result = []
>>> result.append(mark)
>>> result.append(melissa)
>>> result.append(rick)
>>>
>>> result  
[<__main__.User at 0x10c37bf80>,
 <__main__.User at 0x10c3789e0>,
 <__main__.User at 0x10c37a990>]
>>> class User:
...     def __init__(self, firstname, lastname):
...         self.firstname = firstname
...         self.lastname = lastname
...
...     def __str__(self):
...         return f'{self.firstname} {self.lastname}'
...
...     def __repr__(self):
...         cls = self.__class__.__name__
...         firstname = self.firstname
...         lastname = self.lastname
...         return f'{cls}({firstname=}, {lastname=})'
>>>
>>> mark = User('Mark', 'Watney')
>>> melissa = User('Melissa', 'Lewis')
>>> rick = User('Rick', 'Martinez')
>>>
>>> result = []
>>> result.append(mark)
>>> result.append(melissa)
>>> result.append(rick)
>>>
>>> pprint(result)
[User(firstname='Mark', lastname='Watney'),
 User(firstname='Melissa', lastname='Lewis'),
 User(firstname='Rick', lastname='Martinez')]