When an attribute is not found object.__getattr__
is called. Is there an equivalent way to intercept undefined methods?
Asked
Active
Viewed 6,927 times
3 Answers
12
There is no difference. A method is also an attribute. (If you want the method to have an implicit "self" argument, though, you'll have to do some more work to "bind" the method).

Arafangion
- 11,517
- 1
- 40
- 72
-
Second that, everything is an object, no matter if it's `int`, `str` or `function`. – Tomasz Zieliński Oct 04 '10 at 12:08
10
Methods are attributes too. __getattr__
works the same for them:
class A(object):
def __getattr__(self, attr):
print attr
Then try:
>>> a = A()
>>> a.thing
thing
>>> a.thing()
thing
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

detly
- 29,332
- 18
- 93
- 152