Как напечатать комбинированный флаг так же, как имя свойства - PullRequest
2 голосов
/ 22 марта 2020

В Python вы можете использовать класс Flag для представления комбинаций значений.

class Color(Flag):
    Red = auto()
    Green = auto()
    Blue = auto()
    White = Red | Green | Blue

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

>>> print(Color.Red, Color.White, Color.Red|Color.Green)
Color.Red Color.White Color.Green|Red

Свойство name дает вам еще более приятный способ печати, но оно не работает для безымянных комбинированных значений.

>>> print(Color.Red.name, Color.White.name, (Color.Red|Color.Green).name)
Red White None

Есть ли способ получить комбинированное значение флага для печати аналогично name, без написания отдельной функции?

например

Color.Red | Color.Green  =>  Red Green

1 Ответ

1 голос
/ 22 марта 2020

К сожалению, нет. Но это звучит как хороший запрос на улучшение .

...