为什么 PyEphem 文档没有提到 rise_time 或 transit_time?

Why do PyEphem docs not mention rise_time or transit_time?

是否有 PyEphem 中可用的所有函数和对象的完整列表?我找到了一个列表 here。但它似乎并没有包含所有内容。 rise_timetransit_time 等属性存在,并在教程中简要提及,但在手册中的任何地方都没有提及。我应该使用它们吗?有其他选择吗?

不,除了源代码本身,没有 PyEphem 中可用的所有函数和对象的完整列表。

>>> import ephem
>>> ephem.__dict__
{'AlwaysUpError': ephem.AlwaysUpError,
 'Angle': ephem.Angle,
 'Ariel': ephem.Ariel,
 'B1900': 0.3135000001639128,
 'B1950': 18262.423500000034,
 'Body': ephem.Body,
 [...]
 'star': <function ephem.star>,
 'sun_radius': 695000000.0,
 'tiny': 1.346704669748711e-08,
 'twopi': 6.283185307179586,
 'uranometria': <function ephem._libastro.uranometria>,
 'uranometria2000': <function ephem._libastro.uranometria2000>}
>>> 

注意:省略号 ([...]) 是我的。

rise_time rise_az transit_time transit_alt set_time set_azcircumpolar 六个属性已弃用,并警告自 2007 年以来就一直在使用它们。不幸的是——我不确定我当时是否知道这一点——Python 默认情况下不显示针对开发人员的警告,可能是为了不吓到 Python 的用户应用程序:

$ python script_that_asks_for_next_rise.py
2014/1/2 18:04:00

https://docs.python.org/2/library/warnings.html 上有关警告的文档建议“……您应该确保测试您的代码时通常忽略的警告是可见的。您可以通过传递 -Wd... 从命令行执行此操作”,我想这意味着我十多年来一直在做错事:我从没想过要添加 -Wd针对第三方库开发时的命令行!在这种情况下这样做的结果是:

$ python -Wd tmp18.py
tmp18.py:15: DeprecationWarning: the ephem.Body attributes 'rise_time', 'rise_az', 'transit_time', 'transit_alt', 'set_time', 'set_az', 'circumpolar', and 'never_up' are deprecated; please convert your program to use the ephem.Observer functions next_rising(), previous_rising(), next_transit(), and so forth

  print moon.rise_time
2014/1/2 18:04:00

但是由于大多数开发人员可能没有考虑就将 -Wd 关闭,多年来可能不止一位开发人员对这些属性存在但不再记录或支持感到惊讶。

无论如何,我会继续将它们从下一个版本中删除,以防止混淆并防止人们在使用它们时遇到问题。快速参考中显示的方法 next_pass() 是这六个属性的正式继承者。

关于官方支持的属性的更多信息,最完整的参考是PyEphem“快速参考:”

http://rhodesmill.org/pyephem/quick.html