Tôi gặp sự cố với biểu diễn chuỗi. Tôi đang cố gắng in đối tượng của mình và đôi khi tôi nhận được dấu nháy đơn trong đầu ra. Xin hãy giúp tôi hiểu lý do tại sao nó xảy ra và làm thế nào tôi có thể in ra các đối tượng mà không có dấu ngoặc kép.Tại sao một số chuỗi Python được in với dấu ngoặc kép và một số được in không có dấu ngoặc kép?
Đây là mã của tôi:
class Tree:
def __init__(self, value, *children):
self.value = value
self.children = list(children)
self.marker = ""
def __repr__(self):
if len(self.children) == 0:
return '%s' %self.value
else:
childrenStr = ' '.join(map(repr, self.children))
return '(%s %s)' % (self.value, childrenStr)
Dưới đây là những gì tôi làm:
from Tree import Tree
t = Tree('X', Tree('Y','y'), Tree('Z', 'z'))
print t
Dưới đây là những gì tôi nhận được:
(X (Y 'y') (Z 'z'))
Dưới đây là những gì tôi muốn nhận được:
(X (Y y) (Z z))
Tại sao dấu ngoặc kép xuất hiện xung quanh giá trị của các nút đầu cuối, nhưng không phải xung quanh giá trị của các thiết bị đầu cuối không?
OK, tôi đã tìm thấy giải thích tại sao repr (x) tạo chuỗi trong dấu ngoặc kép [ở đây] (http://stackoverflow.com/questions/7784148/understanding-repr-function-in-python) – Olga