Đối với khả năng tương thích Python 2-3, chỉ cần thêm video này vào ví dụ của bạn:
Foo.__nonzero__ = Foo.__bool__
hoặc mở rộng định nghĩa ban đầu của Foo bao gồm:
__nonzero__ = __bool__
Bạn có thể xác định tất nhiên họ ngược cũng vậy, trong đó tên phương thức là __nonzero__
và bạn gán nó cho __bool__
, nhưng tôi nghĩ tên __nonzero__
chỉ là một di sản của C-ishness gốc của việc diễn giải các đối tượng của Python là trung thực hoặc giả dựa trên sự tương đương của chúng với z ero. Chỉ cần thêm câu lệnh ở trên và mã của bạn sẽ hoạt động với Python 2.x và sẽ tự động hoạt động khi bạn nâng cấp lên Python 3.x (và cuối cùng bạn thả nhiệm vụ vào __nonzero__
).
Bản sao chỉ giải quyết vấn đề cho Python 2. Trong khi bản sao này đưa ra giải pháp di động. –