Checking for usual descriptors in Python 2.3
Michael Hudson
mwh at python.net
Thu Feb 12 06:43:47 EST 2004
Michael Hudson <mwh at python.net> writes:
> François Pinard <pinard at iro.umontreal.ca> writes:
>
> > This question is a bit technical, but hopefully, this list will offer me
> > good hints or nice solutions. Happily enough for me, it often does! :-)
> >
> > I would need to recognise and play with descriptor types, like:
> >
> > member descriptors
> > method descriptors
> > getset descriptors
> > wrapper descriptors
> >
> > but do not find how to easily refer to them, either from existing
> > constructor types (like we could do with `property', say), nor from
> > members of the `types' module. I also wonder how much I can "get into"
> > these various descriptors or tear them apart...
>
> If you want to know whether 'ob' is a descriptor,
>
> hasattr(ob, '__get__')
>
> is pretty close. PEP 252 is also your friend.
On the off chance that this wasn't what you were asking (:-) and you
wanted to get your hands on the type objects of each of the given
descriptor types, the only way I can think of doing that is getting
your hands on one and calling type() on it.
member: type(type.__dict__['__dictoffset__'])
method: type(list.append)
getset: type(object.__dict__['__class__'])
wrapper: type(object.__dict__['__getattribute__'])
As to how introspectable each of these are, the interactive
interpreter (or the source) is now your friend.
HTH,
mwh
--
If you don't use emacs, you're a pathetic, mewling, masochistic
weakling and I can't be bothered to convert you. -- Ron Echeverri
More information about the Python-list
mailing list