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')]