我见过很多次这样的事情:
def parse(text):
if hasattr(text, 'read'):
text = text.read()
# Parse the text here...
但是如果我传递以下类的实例,它肯定会失败:
class X(object):
def __init__(self):
self.read = 10
我的问题是:最pythonic的处理方式是什么?
我一直在考虑两种主要方法:
if hasattr(text, 'read') and callable(text.read):
text = text.read()
和
try:
text = text.read()
except ...