문제

내가 전화 할 때

help(Mod.Cls.f)

(모드는 C 확장 모듈입니다), 출력을 얻습니다.

Help on method_descriptor:

f(...)
    doc_string

도움말 출력이 양식이되도록 무엇을해야합니까?

Help on method f in module Mod:

f(x, y, z)
    doc_string

예를 들어 Random.random.shuffle입니다.

내 pymethoddef 항목은 현재입니다.

{ "f", f, METH_VARARGS, "doc_string" }
도움이 되었습니까?

해결책

당신은 할 수 없습니다. 'pydoc'및 'help ()'사용 인 검사 모듈은 C 함수의 정확한 서명이 무엇인지 파악할 방법이 없습니다. 당신이 할 수있는 최선은 내장 기능이하는 일입니다. Docstring의 첫 번째 줄에 서명을 포함시킵니다.

>>> help(range)
Help on built-in function range in module __builtin__:

range(...)
    range([start,] stop[, step]) -> list of integers

...

random.shuffle의 docstring이 "올바른"이유는 C 함수가 아니기 때문입니다. 파이썬으로 작성된 함수입니다.

다른 팁

물론 토마스의 대답은 옳습니다.

나는 많은 C 확장 모듈에 표준 함수 서명 및 기타 동적 언어 기능 (예 : 디스크립터 프로토콜)을 지원할 수 있도록 Python "Wapper"를 가지고 있다고 덧붙였다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top