私は何度も次のようなものを見てきました:
def parse(text):
if hasattr(text, 'read'):
text = text.read()
# Parse the text here...
しかし、次のクラスのインスタンスを渡すと、確実に失敗します。
class X(object):
def __init__(self):
self.read = 10
私の質問は次のとおりです。それを処理する最もpythonicな方法は何ですか?
私は主に2つの方法について考えてきました。
if hasattr(text, 'read') and callable(text.read):
text = text.read()
と
try:
text = text.read()
except ...