我對一些Python套接字代碼的工作目前正使用的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的「對象有一個屬性」 VS我「模塊有一個功能」)它可能有助於保持這一問題的可搜索性,除非兩個可以結合起來。
我沒有看到這個答案如何值得downvote ...:/ – 2009-04-18 19:42:10
我寧願hasattr超過GETATTR只是可讀性的緣故! – bobince 2009-04-19 02:25:18