Я работаю над некоторым кодом сокета Python, который использует функцию socket.fromfd()
.
Однако этот метод недоступен на всех платформах, поэтому я пишу некоторый резервный код в том случае, если метод не определен.
Каков наилучший способ определить, определен ли метод во время выполнения? Является ли следующее достаточным или есть лучший идиом?
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(...)
Мысли?
EDIT Как отметил Паоло, этот вопрос почти дублируется вопроса об определении наличия атрибута. Однако, поскольку используемая терминология является непересекающейся (lk "объект имеет атрибут", а мой модуль имеет функцию "), может быть полезно сохранить этот вопрос для поиска, если они не могут быть объединены.