Tôi đang sử dụng argparse để nhận đầu vào dòng lệnh và cũng để tạo văn bản trợ giúp. Tôi muốn sử dụng ArgumentDefaultsHelpFormatter
làm formatter_class
, tuy nhiên điều này ngăn cản tôi cũng sử dụng RawDescriptionHelpFormatter
mà sẽ cho phép tôi thêm định dạng tùy chỉnh vào mô tả hoặc epilog của tôi.ArgumentParser epilog và định dạng mô tả kết hợp với ArgumentDefaultsHelpFormatter
Có phương pháp hợp lý nào để đạt được điều này ngoài việc viết mã để tạo văn bản cho các giá trị mặc định không? Theo tài liệu argparse, tất cả nội bộ của ArgumentParser
được coi là chi tiết triển khai, không phải API công khai, do đó, phân loại phụ không phải là một tùy chọn hấp dẫn.
Phân lớp theo cách này không phụ thuộc vào nội bộ. Nếu kế thừa nhiều hoạt động ngay bây giờ, nó sẽ trong tất cả các thay đổi trong tương lai. Như giải pháp của tôi cho thấy, hai lớp đang thay đổi các phương thức định dạng khác nhau. – hpaulj
Ví dụ khác sử dụng bội số kế thừa này: http://stackoverflow.com/questions/23567393/pythons-argh-library-preserve-docstring-formatting-in-help-message/23583350#23583350 – hpaulj
@hpaulj Các phương thức định dạng không một phần của API công khai. Từ docstring của 'argparse.HelpFormatter':' Chỉ tên của lớp này được coi là một API công khai. Tất cả các phương thức do lớp cung cấp được coi là chi tiết triển khai.'. Cả hai lớp có thể được viết lại hoàn toàn. – timdiels