In the function __getattr__()
, if a referred variable is not found then it gives an error. How can I check to see if a variable or method exists as part of an objec
I think you should look at the inspect
package. It allows you to 'wrap' some of the things. When you use the dir
method it also list built in methods, inherited methods and all other attributes making collisions possible, e.g.:
class One(object):
def f_one(self):
return 'class one'
class Two(One):
def f_two(self):
return 'class two'
if __name__ == '__main__':
print dir(Two)
The array you get from dir(Two)
contains both f_one
and f_two
and a lot of built in stuff. With inspect
you can do this:
class One(object):
def f_one(self):
return 'class one'
class Two(One):
def f_two(self):
return 'class two'
if __name__ == '__main__':
import inspect
def testForFunc(func_name):
## Only list attributes that are methods
for name, _ in inspect.getmembers(Two, inspect.ismethod):
if name == func_name:
return True
return False
print testForFunc('f_two')
This examples still list both methods in the two classes but if you want to limit the inspection to only function in a specific class it requires a bit more work, but it is absolutely possible.