抱歉这个问题的标题很笨拙,但我想不出合适的方式来表达它。我正在使用 Python 2.7 开发日历类型的应用程序。我有一个类Day
,它有一个构造函数的形式
def __init__(self, d):
# Date in datetime.date format
self.date = d
# Julian date
self.julian = date_utils.calendar_util.gregorian_to_jd(d.year, d.month, d.day)
# Sun and moon rise and set times
self.sun = RiseSet()
self.moon = RiseSet()
...
def SetSunRise(self, t):
assert type(t) is datetime.time
self.sun.rise = t
def SetSunSet(self, t):
assert type(t) is datetime.time
self.sun.set = t
哪里RiseSet
是一个简单的类:
def __init__(self, r=None, s=None):
# rise (r) and set (s) times should normally be datetime.time types
# but it is possible for there to
# be no sun/moon rise/set on a particular day so None is also valid.
if r is not None:
assert type(r) is datetime.time
if s is not None:
assert type(s) is datetime.time
if r is not None and s is not None:
assert r < s
self.rise = r
self.set = s
显然,Day
特定日历中的每一天都有一个对象。这些都包含在一个名为 的字典(键入datetime.date
)days
中。现在我有四个列表,其中包含相关期间的太阳/月亮升起/落下时间:sunrises
、sunsets
、moonrises
和想要为每个inmoonsets
设置太阳/月亮升起/落下时间。Day
days
现在我可以有四个单独的循环遍历四个列表中的每一个。但我真正想做的是有效地使用指向函数的指针之类的东西,所以我可以有类似的东西:
for (func, obj) in zip([Day.SetSunRise, Day.SetSunSet, Day.SetMoonRise, Day.SetMoonSet], [sunrises, sunsets, moonrises, moonsets])
因此,我想要做的是有效地获取指向函数的指针,但基于类定义而不是该类的单个对象/实例。我敢肯定必须有一些简单,优雅的方式来做到这一点,但我目前很难过。
有人吗?