Какова обычная практика для перечислений в Python? [дубликат]

Создайте собственный класс imageView и переопределите свойство «canBecomeFirstResponder» следующим образом:

class ResponsiveImage : UIImageView{
    override var canBecomeFirstResponder: Bool{
        return true
    }
}

Используйте этот тип ResponsiveImage, и ваш код будет работать:)

138
задан Community 23 May 2017 в 12:02
поделиться

4 ответа

class Materials:
    Shaded, Shiny, Transparent, Matte = range(4)

>>> print Materials.Matte
3
364
ответ дан 23 November 2019 в 23:23
поделиться

Я несколько раз видел этот шаблон:

>>> class Enumeration(object):
        def __init__(self, names):  # or *names, with no .split()
            for number, name in enumerate(names.split()):
                setattr(self, name, number)

>>> foo = Enumeration("bar baz quux")
>>> foo.quux
2

Можно также просто использовать участников класса, хотя необходимо будет предоставить собственную нумерацию:

>>> class Foo(object):
        bar  = 0
        baz  = 1
        quux = 2

>>> Foo.quux
2

При поиске чего-то более устойчивого (редкие значения, определенное для перечисления исключение, и т.д.), попробуйте этот рецепт.

19
ответ дан 23 November 2019 в 23:23
поделиться

Я понятия не имею, почему Перечисления не являются поддержкой исходно Python. Лучшим способом я нашел для эмуляции их, путем сверхизбавления _ ул. _ и _ eq _, таким образом, можно сравнить их и когда Вы используете печать (), Вы получаете строку вместо численного значения.

class enumSeason():
    Spring = 0
    Summer = 1
    Fall = 2
    Winter = 3
    def __init__(self, Type):
        self.value = Type
    def __str__(self):
        if self.value == enumSeason.Spring:
            return 'Spring'
        if self.value == enumSeason.Summer:
            return 'Summer'
        if self.value == enumSeason.Fall:
            return 'Fall'
        if self.value == enumSeason.Winter:
            return 'Winter'
    def __eq__(self,y):
       return self.value==y.value

Использование:

>>> s = enumSeason(enumSeason.Spring)

>>> print(s)

Spring
9
ответ дан 23 November 2019 в 23:23
поделиться

Вы могли, вероятно, использовать структуру наследования хотя, чем больше я играл с этим, тем более грязным я чувствовал себя.

class AnimalEnum:
  @classmethod
  def verify(cls, other):
    return issubclass(other.__class__, cls)


class Dog(AnimalEnum):
  pass

def do_something(thing_that_should_be_an_enum):
  if not AnimalEnum.verify(thing_that_should_be_an_enum):
    raise OhGodWhy
6
ответ дан 23 November 2019 в 23:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: