Best way to do attribute docstrings?
Ken Kuhlman
kskuhlman at gmail.com
Fri Sep 7 16:06:07 EDT 2007
What's the best method for annotating attributes with a docstring?
I'm looking to be able to introspect my class & get the comments back
out.
The technique I'm using is a little hoaky, but works.. basically I
create subclasses of the builtin types that I want to be able to use &
then instantiate them in my attribute assignments. This gives me an
object that I can tweak the __doc__ attribute on. An example of what
my code looks like is included below.
I saw that PEP 224 [1] was trying to meet this need, but got rejected
because the proposed syntax wasn't clear enough.
Thanks!
-Ken
[1] http://www.python.org/dev/peps/pep-0224/
attr_doc.py::
# Subclass str so we can modify instance's attributes (like __doc__)
class _(str): pass
# Boolean gave me extra fits that I don't understand, but this
technique works
class MyBool(int):
def __str__(self):
return `self.__int__() > 0`
def __repr__(self):
return self.__str__()
def bool_func(val):
def blah():
return MyBool(val)
return blah
true = bool_func(True)
false = bool_func(False)
class Animal(object):
four_legs = true()
four_legs.__doc__ = "Animal has four legs"
favorite_food = _('cheese')
favorite_food.__doc__ = "Animal's favorite food"
has_fur = true()
has_fur.__doc__ = "Animal has fur"
print Animal.four_legs.__doc__, '::', Animal.four_legs
print Animal.favorite_food.__doc__, '::', Animal.favorite_food
print Animal.has_fur.__doc__, '::', Animal.has_fur
------
This gives the expected results:
Animal has four legs :: True
Animal's favorite food :: cheese
Animal has fur :: True
More information about the Python-list
mailing list