Tôi nhận thấy một hành vi khác với enum trên Python.Làm thế nào để sống với cả enum và enum34?
tôi lần đầu tiên được ngạc nhiên khi nhận thấy đầu ra cho đây là một int
:
>>>import enum
>>>class Color(enum.Enum):
red = 1
>>>Color.red
1
Sau đó, tôi nhận ra tôi đã enum
cài đặt thay vì enum34
:
$ sudo apt-get install python-enum34
Và bây giờ, kết quả là khác nhau :
>>>Color.red
<Color.red: 1>
Ứng dụng hiện tại của tôi đang chấp nhận các loại enum
nơi tôi nhận được giá trị của enum với value.value
. Tất nhiên điều này sẽ nâng cao một ngoại lệ nếu enum sai được cài đặt.
Tôi có thể giải quyết vấn đề này bằng cách nào?
Bạn đang nói về một số mô-đun 'enum' khác với thư viện chuẩn' enum'? Người trong thư viện chuẩn không nên cho bạn kết quả mà bạn đã thấy. – user2357112
Tôi không biết. Tôi chỉ chạy một cài đặt mới của 'ipython' và thử ví dụ này. Tôi đã có đầu ra cũ. Sau đó, tôi cài đặt 'enum34' và tôi nhận được kết quả sau. – nowox
Cài đặt mới sẽ cho bạn một ImportError hoặc kết quả bạn muốn, tùy thuộc vào phiên bản Python của bạn. Bạn có chắc là bạn đã nhớ kế thừa từ 'enum.Enum'? Các đoạn mã bạn đã hiển thị rõ ràng không được sao chép từ phiên phiên dịch thực tế. – user2357112