Xây dựng và dựa trên các câu trả lời trước đó và hiển thị thêm một số ví dụ. Nếu được sử dụng đúng cách, sự khác biệt giữa strvà reprlà rõ ràng. Trong ngắn hạn, reprsẽ trả về một chuỗi có thể được sao chép-dán để xây dựng lại trạng thái chính xác của đối tượng, trong khi strnó hữu ích cho loggingvà observinggỡ lỗi kết quả. Dưới đây là một số ví dụ để xem các kết quả đầu ra khác nhau cho một số thư viện đã biết.
Ngày giờ
print repr(datetime.now())
print str(datetime.now())
Các strlà tốt để in vào một tập tin nhật ký, nơi như reprcó thể tái có mục tiêu nếu bạn muốn chạy nó trực tiếp hoặc đổ nó như lệnh vào một file.
x = datetime.datetime(2017, 12, 12, 18, 49, 27, 134411)
Numpy
print repr(np.array([1,2,3,4,5]))
print str(np.array([1,2,3,4,5]))
trong Numpy, reprmột lần nữa được tiêu thụ trực tiếp.
Ví dụ về Vector3 tùy chỉnh
class Vector3(object):
def __init__(self, args):
self.x = args[0]
self.y = args[1]
self.z = args[2]
def __str__(self):
return "x: {0}, y: {1}, z: {2}".format(self.x, self.y, self.z)
def __repr__(self):
return "Vector3([{0},{1},{2}])".format(self.x, self.y, self.z)
Trong ví dụ này, reprtrả lại một chuỗi có thể được sử dụng / thực thi trực tiếp, trong khi strnó hữu ích hơn như một đầu ra gỡ lỗi.
v = Vector3([1,2,3])
print str(v)
print repr(v)
Một điều cần lưu ý, nếu strkhông được định nghĩa nhưng repr, strsẽ tự động gọi repr. Vì vậy, tốt nhất là nên xác địnhrepr