ฟังก์ชัน str แปลงออบเจ็กต์ใน Python เป็น string representation มีฟังก์ชันอีกตัวหนึ่งชื่อ repr() ใน Python ที่แปลงออบเจ็กต์เป็น expression string เป้าหมายของ __repr__ คือความชัดเจน (unambiguous) ในขณะที่ __str__ เป้าหมายคือความอ่านง่าย (readable) __repr__ ใช้คำนวณ "official" string representation ของออบเจ็กต์
ตัวอย่าง
ลองดูตัวอย่าง datetime เพื่อเข้าใจว่าทั้งสองฟังก์ชันให้ผลต่างกันอย่างไร
import datetime today = datetime.datetime.now() str(today) repr(today)
ผลลัพธ์
'2018-04-08 11:25:36.918979' 'datetime.datetime(2018, 4, 8, 11, 25, 36, 918979)'
จากผลลัพธ์เห็นว่า str ให้ผลลัพธ์ที่สวย อ่านง่าย ส่วน repr ให้การแสดงผลแบบ constructor ของออบเจ็กต์