why do instance checks as opposed to a try/except that catches a `NotImplementedError`/`AttributeError`? Seems like that would be more Pythonic

Also, can we add an 

```python
else:
    return False
```

Just would be a little clearer here.