isinstance が良いのか、hasattr が良いのか?

興味深い議論を stackoverflow で見つけました

exception handling - python isinstance vs hasattr vs try/except: What is better? - Stack Overflow

以外にも、try~except: を使う方が Python 言語として良いとされてます。
でもコード可読性、それから、対象チェックの指定で、タプルを指定できる isinstance
優れているように思いました。

タプルを指定して問い合わせれる例

# -*- coding: UTF-8 -*-
from datetime import datetime, date

ary = [datetime.now(), date.today(), True]
for obj in ary:
    if isinstance(obj, (datetime, date)):
        print('datetime or date : {}'.format(type(obj)))
    else:
        print('Not datetime , date : {}'.format(type(obj)))

結果、、

datetime or date : <class 'datetime.datetime'>
datetime or date : <class 'datetime.date'>
Not datetime , date : <class 'bool'>