tôi quyết định sử dụng str để in nội dung của một cây trong cấu trúc cây giống, sử dụng một cái gì đó giống nhưTại sao str không thể nhận tham số thứ hai, khi __str__ có thể?
print tree
Các nút của cây là mọi đối tượng của các lớp do người dùng tạo ra và tôi quá tải __str__
phương pháp kỳ diệu của họ để sử dụng str các nút con sau khi các tab t thụt lề như thế
def __str__ (self,t=0) :`
return t*'\t' + str(self.label) +':' +'\n'+ str(self.l,t+1)+'\n'+str(self.right,t+1)+'\n'
Tuy nhiên tôi không thể gọi str
với điều đó t
tham số, nhưng tôi có thể gọi node.__ str__(t=4)
.Isn't str
, chỉ có phím tắt để sự kỳ diệu Hoặc là vì pa rser từ chối các tham số bổ sung cho str
mà không kiểm tra phương pháp ma thuật?
P.S. Tôi quan tâm đến hành vi này. Tôi biết đó không phải là cách tốt nhất để in cây, đó là một hack;)
nhưng nếu str hoạt động như trong ví dụ của bạn, nó sẽ hoạt động nếu obj .__ str __() không dẫn đến ngoại lệ.Và nó không có trong trường hợp của tôi. –
tôi đã nhận nó, xin lỗi;) –
@Alexander Ivanov: '...' trong mã là * bỏ qua mã *, chỉ cho mục đích minh họa. Tôi không có ý định thực hiện hoàn chỉnh 'str'. –