Предположим, у меня есть класс, как это:Как я могу получить docstring для свойства экземпляра класса Python?
class TestCase(object):
"""Class docstring"""
def meth(self):
"""Method docstring"""
return 1
@property
def prop(self):
"""Property docstring"""
return 2
Это достаточно легко для меня, чтобы получить строки документации для самого класса, или для обычного метода:
tc = TestCase()
print(tc.__doc__)
# Class docstring
print(tc.meth.__doc__)
# Method docstring
Однако этот подход Безразлично» т работа для свойств - вместо этого я получаю атрибут любого объекта возвращаются методом свойства геттерного __doc__
(в данном случае, int
):
print(tc.prop.__doc__)
# int(x=0) -> int or long
# int(x, base=10) -> int or long
# ...
То же самое относится к getattr(tc, "prop").__doc__
и getattr(tc.prop, "__doc__")
.
Я знаю, что механизмы самоанализа Python способны получить доступ к документированной строке, которую я ищу. Например, когда я называю help(tc)
я получаю:
class TestCase(__builtin__.object)
| Class docstring
|
| Methods defined here:
|
| meth(self)
| Method docstring
|
| ----------------------------------------------------------------------
| Data descriptors defined here:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
|
| prop
| Property docstring
Как help
может получить доступ к строке документации для tc.prop
?
Для экземпляра 'TestCase' мне нужно будет использовать' tc .__ class __. Prop .__ doc__' или 'type (tc) .prop .__ doc__', но вы правы. –
@ali_m Спасибо. Работая над этим! –