如何以与名称相同的方式打印组合标志 属性

How to print combined Flag in the same way as name property

在Python中,您可以使用标志class来表示值的组合。

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 的方式获取组合的 Flag 值进行打印?

例如

Color.Red | Color.Green  =>  Red Green

很遗憾,没有。但这听起来像 good enhancement request.