hasattr( proxy, 'position')
is implemented calling getattr( proxy, 'position')
this invokes overhead and may trigger exceptions
'position' in dir( proxy)
behaves more friendly but may overlook metaclass attributes:
>>> class Meta(type):
... foo = 'bar'
...
>>> class Foo(metaclass=Meta):
... pass
...
>>> hasattr(Foo, 'foo')
True
>>> 'foo' in dir(Foo)
False
'position' in list( map( lambda x: x.lower(), proxy.get_attribute_list()))
'position' in list( map( str.lower, p.get_attribute_list()))
this seems to be a non-destructive solution for Tango-related applications