My Python script (đối với danh sách todo) được bắt đầu từ dòng lệnh như thế này:Làm cách nào để bạn xử lý các tùy chọn không thể sử dụng cùng nhau (sử dụng OptionParser)?
todo [options] <command> [command-options]
Một số tùy chọn không thể được sử dụng cùng nhau, ví dụ
todo add --pos=3 --end "Ask Stackoverflow"
sẽ xác định được vị trí thứ ba và cuối danh sách. Tương tự như vậy
todo list --brief --informative
sẽ gây nhầm lẫn cho chương trình của tôi về tóm tắt hoặc cung cấp thông tin. Vì tôi muốn có một sự kiểm soát khá mạnh mẽ, những trường hợp như thế này sẽ là một bó, và những cái mới chắc chắn sẽ nảy sinh trong tương lai. Nếu người dùng vượt qua kết hợp các tùy chọn không hợp lệ, tôi muốn đưa ra một thông báo mang tính thông tin, tốt nhất là cùng với trợ giúp sử dụng do optparse cung cấp. Hiện tại tôi xử lý điều này với một tuyên bố if-else mà tôi thấy thực sự xấu xí và nghèo nàn. Ước mơ của tôi là có một cái gì đó như thế này trong mã của tôi:
parser.set_not_allowed(combination=["--pos", "--end"],
message="--pos and --end can not be used together")
và OptionParser sẽ sử dụng điều này khi phân tích cú pháp các tùy chọn.
Vì điều này không tồn tại như tôi biết, tôi hỏi cộng đồng SO: Làm cách nào để bạn xử lý việc này?
Giải pháp tuyệt vời! – Joel
'super()' sẽ không hoạt động đối với Python 2.X, vì 'OptionParser' được tạo ra như một lớp kiểu cũ. Một giải pháp được cung cấp trên [Stack Overflow question 2023940] (http://stackoverflow.com/questions/2023940/using-super-when-subclassing-python-class-that-is-not-derived-from-objectold). – gotgenes
Cảm ơn, tôi đã sửa nó bằng cách đánh vần siêu lớp một cách rõ ràng. –