Обозначение кода как введение в мои вопросы:
import re, inspect, datetime
inspect.getargspec (re.findall)
# =>
# ArgSpec(args = ['pattern', 'string', 'flags'], varargs=None,
# keywords=None, defaults = (0,))
type (datetime.datetime.replace)
# => <type 'method_descriptor'>
inspect.getargspec (datetime.datetime.replace)
# => Traceback (most recent call last):
# File "<stdin>", line 1, in <module>
# File "/usr/lib/python2.7/inspect.py", line 816, in getargspec
# raise TypeError('{!r} is not a Python function'.format(func))
# TypeError: <method 'replace' of 'datetime.datetime' objects> is
# not a Python function
Кажется, что единственный способ найти подпись datetime.datetime.replace
, в то время как я код, это посмотреть в документ: date.replace(year, month, day)
.
Единственная часть интроспекции, которая, кажется, работает:
datetime.datetime.replace.__doc__
# => 'Return datetime with new specified fields.'
Я изучил, как работает инструмент-подсказка аргумента функции Jupyter, у них есть одна и та же проблема, т.е. для datetime.datetime.replace
нет аргумента.
Итак, вот вопросы:
-
Можно ли каким-либо образом получить список аргументов? Может быть, я смогу установить источники C для
datetime
и подключить их через атрибут__file__
? -
Можно ли аннотировать a
<type 'method_descriptor'>
с информацией о arglist? В этом случае я мог бы проанализировать определение уценки связанного документа и автоматически аннотировать встроенные функции модуля.