【发布时间】:2010-10-20 07:44:20
【问题描述】:
我正在编写一些使用 socket.fromfd() 函数的 Python 套接字代码。
但是,这个方法并不是在所有平台上都可用,所以我写了一些回退代码,以防该方法没有定义。
确定方法是否在运行时定义的最佳方法是什么?以下是否足够或有更好的习惯用法?
if 'fromfd' in dir(socket):
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
我有点担心dir() 的文档似乎不鼓励使用它。 getattr() 会是更好的选择吗,例如:
if getattr(socket, 'fromfd', None) is not None:
sock = socket.fromfd(...)
else:
sock = socket.socket(...)
想法?
编辑正如Paolo 指出的,这个问题是nearly a duplicate 的关于确定属性存在的问题。但是,由于所使用的术语是不相交的(lk 的 “对象具有属性” 与我的 “模块具有功能”),因此保留此问题的可搜索性可能会有所帮助,除非两者可以结合。
【问题讨论】:
标签: python