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

Giải thích các hàm str () vs repr () trong Python


Tài liệu Python chính thức cho biết __repr__ được sử dụng để tìm biểu diễn chuỗi "chính thức" của một đối tượng và __str__ được sử dụng để tìm biểu diễn chuỗi "không chính thức" của một đối tượng. Câu lệnh print và hàm tích hợp str () sử dụng __str__ để hiển thị biểu diễn chuỗi của đối tượng trong khi hàm tích hợp repr () sử dụng __repr__ để hiển thị đối tượng. Hãy để chúng tôi lấy một ví dụ để hiểu hai phương pháp này thực sự làm gì.

Hãy để chúng tôi tạo một đối tượng datetime -

>>> import datetime
>>> today = datetime.datetime.now()
When I use the built-in function str() to display today:
>>> str(today)
'2018-01-12 09:21:58.130922'

Chúng tôi thấy rằng ngày được hiển thị dưới dạng chuỗi theo cách mà người dùng có thể hiểu ngày và giờ. Bây giờ, hãy xem khi nào chúng ta sử dụng hàm tích hợp sẵn repr () -

>>> repr(today)
'datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)'

Chúng tôi thấy rằng điều này cũng trả về một chuỗi nhưng chuỗi là biểu diễn "chính thức" của một đối tượng datetime, có nghĩa là biểu diễn chuỗi "chính thức" này có thể tái tạo lại đối tượng -

>>> eval('datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)')
datetime.datetime(2018, 1, 12, 9, 21, 58, 130922)

Hàm tích hợp eval () chấp nhận một chuỗi và chuyển đổi nó thành một đối tượng datetime.

Do đó, nói chung, mỗi lớp chúng ta viết mã phải có __repr__ và nếu bạn nghĩ rằng sẽ hữu ích nếu có một phiên bản chuỗi của đối tượng, như trong trường hợp datetime, hãy tạo một hàm __str__.