Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

อะไรคือความแตกต่างระหว่าง __str__ และ __repr__ ใน Python?


ฟังก์ชันในตัว repr() และ str() เรียก object.__repr__(self) และ object.__str__(self) ตามลำดับ ฟังก์ชันแรกคำนวณการแทนค่าของอ็อบเจ็กต์อย่างเป็นทางการ ในขณะที่ฟังก์ชันที่สองคืนค่าการแสดงอ็อบเจกต์อย่างไม่เป็นทางการ

ผลลัพธ์ของฟังก์ชันทั้งสองจะเหมือนกันสำหรับวัตถุจำนวนเต็ม

>>> x = 1 
>>> repr(x)
'1'
>>> str(x)
'1'

อย่างไรก็ตาม ไม่ใช่กรณีของวัตถุสตริง

>>> x = "Hello"
>>> repr(x)
"'Hello'"
>>> str(x)
'Hello'

ค่าส่งคืนของ repr() ของวัตถุสตริงสามารถประเมินได้โดยฟังก์ชัน eval() และผลลัพธ์ในวัตถุสตริงที่ถูกต้อง อย่างไรก็ตาม ผลลัพธ์ของ str() ไม่สามารถประเมินได้

>>> y1 = repr(x)
>>> eval(y1)
'Hello'
>>> y2 = str(x)
>>> eval(y2)
NameError: name 'Hello' is not defined

สรุป. repr() คืนค่าการแสดงค่าเริ่มต้นและชัดเจนของวัตถุ โดยที่ str() ให้การแสดงแบบไม่เป็นทางการที่อาจอ่านได้ แต่อาจไม่คลุมเครือเสมอไป