我有一个函数,它有一些可能的返回值。作为一个简单的例子,让我们假设它采用了积极的int并返回“小”,“中”或“大”:
def size(x):
if x < 10:
return SMALL
if x < 20:
return MEDIUM
return LARGE
我想知道写作的最好方法&amp;定义返回值。我想知道如何使用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
然后我的调用代码如下:
if size(n) == size.small:
...
这似乎是一个很好的内置“枚举”,可能比创建模块级枚举更清晰/更简单,或者将3个值定义为全局常量,如SIZE_SMALL, SIZE_MEDIUM
等。但我不认为我以前见过这样的代码。这是一个好方法还是存在缺陷/缺点?
答案 0 :(得分:3)
虽然你可以,但我不会,特别是现在Python中的Enum type已经是backported。
上面的示例可能看起来像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
使用中:
--> Size.classify(15)
<Size.medium: 2>
答案 1 :(得分:1)
namedtuple
,也许?
>>> from collections import namedtuple
>>>
>>> SizeSpec = namedtuple('SizeSpec', ['small', 'medium', 'large'])
>>>
>>> size = SizeSpec(small=1, medium=2, large=3)
>>>
>>> size.small
1
>>> size.medium
2
>>> size.large
3