Что такое pythonic Способ рассказать вызывающей функции, какие значения поддерживает данный параметр?Pythonic way about Enums
Он является примером для PyQt (для GUI). Скажем, у меня есть флажок,
class checkbox(object):
....
def setCheckState(self, value):
....
Здесь setCheckState()
следует ожидать только проверил или бесконтрольно.
PyQt использует встроенное перечисление (т. Е. Qt.Checked
или Qt.Unchecked
), но это ужасно. Я постоянно в документации, ищущей перечисление для объекта, с которым я работаю.
Очевидно, PyQt написан в unpythonic C++ sytle. Как должен эту или аналогичную проблему обрабатывать в Python? Согласно PEP 435, перечисления, похоже, являются недавним дополнением к языку и для очень конкретных приложений, поэтому я бы предположил, что есть/был лучший способ справиться с этим?
Я хочу, чтобы код, который я пишу, прост в использовании, когда мои функции требуют определенных значений параметров - почти как функция combobox для функций.
Enums были введены именно потому, что каждый использовал свою собственную взломанную замену. Если вы хотите перечислить, используйте перечисление.Если у вас есть только два состояния, рассмотрите использование логического значения: 'def setCheckState (self, checked = True):'. – MisterMiyagi
Противники с инвертированием могут утверждать, что должны быть три отдельные функции, которые не принимают вместо аргумента * any *: 'checkbox.set_checked()', 'checkbox.set_unchecked()' и 'checkbox.toggle() '. – chepner
Я предполагаю, что это больше основано на мнениях, чем я думал, я надеялся, что, как и большинство вещей на Python, для этого будет правильный путь. –