Безопасный с точки зрения типов перечислимый шаблон, который использовался в Java предварительный JDK 5, имеет много преимуществ. Во многом как в ответе Alexandru, Вы создаете класс, и поля уровня класса являются перечислимыми значениями; однако, перечислимые значения являются экземплярами класса, а не маленьких целых чисел. Это имеет преимущество, которое Ваши перечислимые значения непреднамеренно не сравнивают равный маленьким целым числам, можно управлять, как они печатаются, добавьте произвольные методы, если это полезно, и сделайте утверждения с помощью isinstance:
class Animal:
def __init__(self, name):
self.name = name
def __str__(self):
return self.name
def __repr__(self):
return "" % self
Animal.DOG = Animal("dog")
Animal.CAT = Animal("cat")
>>> x = Animal.DOG
>>> x
>>> x == 1
False
А, недавние , на который поток на python-dev указал там, являются несколькими перечислимыми библиотеками в дикой природе, включая:
Окончательный ресурс для / sys
- это Documentation / sysfs-rules.txt . Окончательный ресурс для / proc / sys
- это Documentation / sysctl / . Окончательный ресурс для остальной части / proc
выглядит как Documentation / filesystems / proc.txt . Остальная часть каталога Documentation /
исходного кода ядра Linux содержит другую интересную информацию. В частности, Documentation / ABI / упоминает стабильность каждого интерфейса.