получить `object .__ doc__` в виде необработанной строки - PullRequest
0 голосов
/ 30 ноября 2009

Есть ли способ получить object.__doc__ в виде необработанной строки, кроме добавления 'r' перед самой доктриной в исходном коде?

У меня внутри латексный код, и '\ r's,' \ f's и т. Д. Создают проблемы.

Ответы [ 3 ]

7 голосов
/ 30 ноября 2009

Нет такого типа Python, как «необработанная строка» - есть необработанная строка литералы , которые представляют собой всего лишь один синтаксис подход (из многих) указать константы (т.е. литералы), которые имеют строковые типы. Так что «получать» что-то «в виде необработанной строки» просто бессмысленно. Вы можете записать строки документации в виде необработанных строковых литералов (то есть с префиксом r - это именно то, что обозначает необработанный строковый литерал, конкретный синтаксис, который идентифицирует такую ​​константу для компилятора Python), либо удвоить любые обратные косые черты в них (альтернативный способ задания константных строк, включая символы обратной косой черты), но это не имеет ничего общего с «получением» их тем или иным способом.

2 голосов
/ 30 ноября 2009

разница между необработанной строкой и остальным просто зависит от литерального синтаксиса исходного кода. после разбора нет «необработанного» строкового объекта. результат repr(object.__doc__) всегда будет таким, что вы можете скопировать и вставить результат в исходный скрипт python и получить исходную строку.

рассмотреть следующие вопросы:

>>> def foo():
...     'foo\nbar'
...     pass
...
>>> foo.__doc__
'foo\nbar'
>>> print foo.__doc__
foo
bar
>>>
2 голосов
/ 30 ноября 2009

Нет, вы должны добавить r. Если вы не добавите r, вы не сможете вернуть исходную строку независимо от того, что вы делаете.

Если вам не нравятся необработанные строки, другая альтернатива - избежать обратной косой черты в строках с помощью дополнительной обратной косой черты.

...