我有一个方法可以在Python 2中接受一个unicode
参数,但是在Python 3中它可以接受一个str
。
我想知道如何为此功能编写sphinx docstring:
:param unicode text:
或:param str text:
还是Python 2和Python 3的单独文档?
示例:
def myfunction(text):
"""Do something with text
:param unicode text: Must be unicode
:rtype: unicode
:raises TypeError: If text is not a unicode
"""
if PY2 and not isinstance(text, unicode):
raise TypeError("Argument 'text' must be unicode")
...
return text
答案 0 :(得分:2)
我不相信six.text_type
会有更简单的方法。
最重要的是:
-请仔细检查您是否确实需要unicode
而不是basestring
,这看起来是非Python的
-如果您正在迁移到PY3,并且这是兼容性问题,只需使用str
和PY3的文档
-写下PY3的类型并阐明描述上的差异。 Docstrings对人类来说是100%,只要考虑一下它是否更容易在罕见的情况下阅读1个音符或每次解密密码都怪异的兼容类型