Создайте собственный класс imageView и переопределите свойство «canBecomeFirstResponder» следующим образом:
class ResponsiveImage : UIImageView{
override var canBecomeFirstResponder: Bool{
return true
}
}
Используйте этот тип ResponsiveImage, и ваш код будет работать:)
class Materials:
Shaded, Shiny, Transparent, Matte = range(4)
>>> print Materials.Matte
3
Я несколько раз видел этот шаблон:
>>> 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
При поиске чего-то более устойчивого (редкие значения, определенное для перечисления исключение, и т.д.), попробуйте этот рецепт.
Я понятия не имею, почему Перечисления не являются поддержкой исходно 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
Вы могли, вероятно, использовать структуру наследования хотя, чем больше я играл с этим, тем более грязным я чувствовал себя.
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