When an attribute is not found object.__getattr__
is called. Is there an equivalent way to intercept undefined methods?
__getattr__ equivalent for methods
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
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).
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
you didn't return anything.
class A(object):
def __getattr__(self, attr):
return attr
should work
© 2022 - 2024 — McMap. All rights reserved.
int
,str
orfunction
. – Aerophyte