【发布时间】:2014-04-09 13:29:59
【问题描述】:
这个问题具体涉及到下面示例代码中类常量ABOVE和BELOW的使用。
我在不同的模块中有几个不同的类,如下所示:
class MyClass(object):
ABOVE = 1
BELOW = 0
def __init__(self):
self.my_numbers = [1,2,3,4,5]
def find_thing_in_direction(self, direction, cutoff):
if direction == self.ABOVE:
return [n for n in self.my_numbers if n > cutoff]
else:
return [n for n in self.my_numbers if n < cutoff]
my_class = MyClass()
my_var = my_class.find_thing_in_direction(MyClass.ABOVE, 3)
如果我有一些分散在不同模块中的类,每个模块都有自己的 ABOVE 和 BELOW,我应该将这些常量提取到某个地方,还是将常量保留在自己的类中更好?
有没有更 Pythonic 的方式来代替使用这些类常量?
【问题讨论】:
-
版主:我最初在 Code Review 上发布了这篇文章,因为离题而被关闭。我在 Programmers SE 聊天室询问它是否是程序员的主题,有人建议在这里会更好。如果它不适合 stackoverflow,您能否建议哪个 SE 站点最好?
-
如果 ABOVE 或 BELOW 的值发生变化,您是否希望所有值同时变化?
-
顺便说一句,你那里的
if块毫无意义:) -
@unutbu 我想答案是如果 ABOVE 或 BELOW 发生变化,我希望行为保持不变。也就是说,我希望如果使用 direction=ABOVE 调用代码,则无论 ABOVE 的值如何,都会执行第一个 if 语句
-
@ErikAllik 已修复谢谢 :-)