Tôi muốn xem liệu shlex
có phải là lựa chọn tốt cho thứ tôi đang cố gắng xây dựng hay không, vì vậy tôi nghĩ mình sẽ đặt nó ở số debug mode để chơi với nó. Chỉ, nhà xây dựng của shlex mới có số này là weird thing it does: nó đặt self.debug
thành 0
và sau đó kiểm tra ngay lập tức nếu đó là sự thật.Đặt shlex ở chế độ gỡ lỗi
…
self.debug = 0
self.token = ''
self.filestack = deque()
self.source = None
if self.debug:
print 'shlex: reading from %s, line %d' \
% (self.instream, self.lineno)
Tôi biết Python có một số tính năng lập trình meta mạnh mẽ, nhưng tôi không thể tìm ra cách này được thiết kế để làm việc - ngay cả khi tôi ghi đè lên các nhà xây dựng, không có cách nào chương trình để có được giữa các thiết lập của giá trị và việc sử dụng nó.
Có nghĩa vụ phải là một cách để đưa ra tuyên bố trong điều kiện if self.debug
(và nếu có, như thế nào?), Đó là lỗi, hoặc có khả năng thứ ba mà tôi chưa xem xét?
Có lập trình chắc chắn có cách: http://ideone.com/wcPVRg. Nhưng nó trông giống như một mã thực sự cũ, [viết năm 1999] (https://github.com/python/cpython/blob/2bdca80eb5d7757d4542e9e12e425a54a11fe300/Lib/shlex.py) một cái gì đó và không ai đã chạm vào phần đó cả. o_O –
Cuối cùng là một chút hardcoded, đây là cách hơi khác nhau: http://ideone.com/lDCKvu –
Điều đó có vẻ giống như một lỗi. Nó là hoàn toàn hợp lý cho 'shlex' để yêu cầu bạn đặt' s.debug = 1' chỉ sau khi xây dựng ... nhưng trong trường hợp đó, không có lý do chính đáng để nó kiểm tra 'self.debug' trong initializer. – abarnert