cuốn sách gpt4 ai đã làm

Python - Tại sao __str__ muốn trả về thứ gì đó khi được gọi? Tôi có chức năng in trong __str__

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 07:20:15 26 4
mua khóa gpt4 Nike

Tôi đang xây dựng một lớp đơn giản bằng Python. Tôi đã xác định cho riêng mình __str__ phương thức này, nó sẽ hoạt động tốt khi tôi gọi print trên một thể hiện của lớp. Khi tôi tạo một thể hiện của lớp và gọi nó in , xảy ra lỗi:

TypeError: __str__ trả về không phải chuỗi (loại NoneType)

Tôi hiểu lỗi, nó cho tôi biết rằng hàm này không trả về bất cứ thứ gì (nó trả vềKhông có)

lớp Xe (đối tượng):

def __init__(tự, gõ, hãng sản xuất, kiểu máy, màu sắc, năm, dặm):
self.typ = gõ
self.make = làm
self.model = người mẫu
self.color = color.low()
tự.năm = năm
self.miles = dặm

chắc chắn __str__(tự):
print('Loại xe: ' + str(self.typ))
print('Make: ' + str(self.make))
print('Model: ' + str(self.model))
print('Năm: ' + str(self.year))
print('Dặm: ' + str(self.miles))
#return '' # Tôi có thể tránh gặp lỗi nếu tôi bỏ bình luận dòng này

bmw = Xe('SUV', 'BMW', 'X5', 'bạc', 2003, 12030)
in bmw

Như bạn có thể thấy, tôi __str__ Hàm chứa tất cả các câu lệnh in mà tôi muốn. Tôi không cần nó để trả lại bất cứ điều gì. Đây là đầu ra tôi muốn.

Loại xe: SUV
Hãng sản xuất: BMW
Model: X5
Năm: 2003
Dặm: 12030

Làm cách nào tôi có thể nhận được đầu ra này? Tôi đã thử cách này để tránh lỗi in nhưng lỗi vẫn xuất hiện:

chắc chắn __str__(tự):
thử:
print('Loại xe: ' + str(self.typ))
print('Make: ' + str(self.make))
print('Model: ' + str(self.model))
print('Năm: ' + str(self.year))
print('Dặm: ' + str(self.miles))
ngoại trừ:
vượt qua

câu trả lời hay nhất

theo __str__tài liệu,

Được gọi bằng hàm dựng sẵn str() và bằng câu lệnh print để tính toán biểu diễn chuỗi “không chính thức” của một đối tượng. đại diện() trong đó nó không nhất thiết phải là một biểu thức Python hợp lệ: thay vào đó có thể sử dụng một biểu diễn ngắn gọn hoặc thuận tiện hơn. Giá trị trả về phải là một đối tượng chuỗi.

因此,__str__ Giá trị trả về phải là một chuỗi, trong trường hợp của bạn, bạn không trả về bất cứ thứ gì nên Python trả về theo mặc định Không có.

Bạn có thể làm điều này bằng cách thay đổi __str__ để có được đầu ra mong muốn như hiển thị bên dưới

chắc chắn __str__(tự):
return "Loại xe: {}\nSản xuất: {}\nMẫu xe: {}\nNăm: {}\nSố dặm: {}" \
.format(self.typ, self.make, self.model, self.year, self.miles)

Về Python - Tại sao __str__ muốn trả về thứ gì đó khi được gọi? Tôi có chức năng in trong __str__ và chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/21364806/

26 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress