我正在编写一些使用socket.fromfd()
函数的Python socket代码。
但是,该方法并非在所有平台上都可用,所以我正在编写一些备用代码以防该方法未定义。
在运行时确定方法是否已定义的最佳方法是什么?以下代码是否足够,还是有更好的惯用语言?
if 'fromfd' in dir(socket):
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
我有点担心Python的dir()
文档中似乎不太鼓励使用它。那么,如下使用getattr()
是否是更好的选择:
if getattr(socket, 'fromfd', None) is not None:
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
有什么想法?
编辑 正如Paolo所指出的,这个问题几乎与关于确定属性存在的问题重复了。然而,由于使用的术语不同(lk的“对象具有属性”与我的“模块具有函数”),如果不能将两者合并,则保留此问题以便搜索可能会有帮助。
getattr
是一个好选择。 - anatoly techtonik