我有一个函数,它有几个可能的返回值。作为一个简单的例子,让我们假设它接受一个正整数并返回“小”、“中”或“大”:
def size(x):
if x < 10:
return SMALL
if x < 20:
return MEDIUM
return LARGE
Run Code Online (Sandbox Code Playgroud)
我想知道编写和定义返回值的最佳方法。我想知道使用Python函数属性,如下:
def size(x):
if x < 10:
return size.small
if x < 20:
return size.medium
return size.large
size.small = 1
size.medium = 2
size.large = 3
Run Code Online (Sandbox Code Playgroud)
然后我的调用代码看起来像:
if size(n) == size.small:
...
Run Code Online (Sandbox Code Playgroud)
这似乎是一个不错的内置“枚举”,可能比创建模块级枚举或将 3 个值定义为全局常量(如SIZE_SMALL, SIZE_MEDIUM等)更清晰/更简单。但我认为我以前从未见过这样的代码. 这是一个好方法还是有陷阱/缺点?
虽然你可以,但我不会,特别是现在 Python 在 3.4 中有一个Enum 类型,该类型已被向后移植。
您上面的示例可能如下所示Enum:
class Size(Enum):
small = 1
medium = 2
large = 3
@classmethod
def classify(cls, number):
if number < 10:
return cls.small
elif number < 20:
return cls.medium
else:
return cls.large
Run Code Online (Sandbox Code Playgroud)
正在使用:
--> Size.classify(15)
<Size.medium: 2>
Run Code Online (Sandbox Code Playgroud)