Python — using function attributes as return values
本问题已经有最佳答案,请猛点这里访问。
我有一个函数,它有一些可能的返回值。作为一个不起眼的例子,让我们假设它接受了一个正整数,并返回"small"、"medium"或"large":
1 2 3 4 5 6 | def size(x): if x < 10: return SMALL if x < 20: return MEDIUM return LARGE |
我想知道写和定义返回值的最佳方法。我想知道如何使用python函数属性,如下所示:
1 2 3 4 5 6 7 8 9 10 | 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 |
那么我的电话号码应该是:
1 2 | if size(n) == size.small: ... |
这似乎是一个很好的内置"枚举",可能比创建模块级枚举更清晰/更简单,或者将3个值定义为全局常量(如
当你可以,我不能,尤其是现在,Python有一枚举类型在这3.4 backported有蜜蜂。 </P >
例如,你可能看以上这类作为一
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
在使用: </P >
1 2 | --> Size.classify(15) <Size.medium: 2> |
1 2 3 4 5 6 7 8 9 10 11 12 | >>> 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 |