Computer >> Máy Tính >  >> Lập trình >> Python

Sự khác biệt giữa __str__ và __repr__ trong Python là gì?

Các hàm được tích hợp sẵn repr () và str () lần lượt gọi phương thức đối tượng .__ repr __ (self) và đối tượng .__ str __ (self). Hàm đầu tiên tính toán biểu diễn chính thức của đối tượng, trong khi hàm thứ hai trả về biểu diễn không chính thức của đối tượng.

Kết quả của cả hai hàm đều giống nhau đối với đối tượng số nguyên.

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

Tuy nhiên, nó không phải là trường hợp của đối tượng chuỗi.

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

Giá trị trả về của repr () của một đối tượng chuỗi có thể được đánh giá bằng hàm eval () và kết quả là đối tượng chuỗi hợp lệ. Tuy nhiên, kết quả của str () không thể được đánh giá.

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

Để tóm tắt. repr () trả về một biểu diễn mặc định và rõ ràng của đối tượng, trong đó str () cung cấp một biểu diễn không chính thức có thể đọc được nhưng có thể không phải lúc nào cũng rõ ràng.