C#:python文件中类似反射的机制(获取函数、参数等)

C#:python文件中类似反射的机制(获取函数、参数等),c#,python,reflection,documentation,C#,Python,Reflection,Documentation,在C#程序中,我想检查给定python文件提供的函数。如果可能的话,我还想获得关于每个函数和参数的元信息,比如描述 我可以控制C#端和Python端 我怎样才能做到这一点 (至于用例:我将用Python编写一个dispatcher函数,在给定所需参数的情况下,C程序可以在Python脚本中调用该函数来执行特定函数。)从未尝试过这一点。但我认为您可以使用模块optpass(摘自): 使用函数。从以下方法获取文档: def factorial(x): '''int f(int x); ret

在C#程序中,我想检查给定python文件提供的函数。如果可能的话,我还想获得关于每个函数和参数的元信息,比如描述

我可以控制C#端和Python端

我怎样才能做到这一点


(至于用例:我将用Python编写一个dispatcher函数,在给定所需参数的情况下,C程序可以在Python脚本中调用该函数来执行特定函数。)

从未尝试过这一点。但我认为您可以使用模块
optpass
(摘自):

使用
函数。从以下方法获取文档:

def factorial(x):
    '''int f(int x); returns the factorial of an integer number'''
    #code here

>>> factorial.__doc__
'int f(int x); returns the factorial of an integer number'
使用第一部分(
intf(intx);
)作为它需要和返回的参数的描述(您可以使用这一部分,只使用字符串直到第一个分号)

并使用
getattr
调用函数():


希望这对您有所帮助

谢谢。不过,我想从C#端来做这件事,而不是从python到python。在C#代码中,应该有一些类似于
getFunctions()
的代码,它将在python代码中调用
optparser
,然后,它会将
\uuuu doc\uuuu
字符串的相应部分返回给C#进程,执行您需要的操作,然后使用类似于
callFunction(args)
的方法,在python进程中调用
getattr
。如果我不理解你,那就是你想要的,那也满足了我的要求。从C#端来说,我更喜欢这里的逻辑,但这也很好。(另外,在这种情况下,我必须在检查Python代码时调用它,而在另一种情况下,我只需要在运行时调用它。在我的情况下,这是两种不同的情况。)我认为您可以从C#code中以文本形式打开Python文件,查找三重引号字符串,或者只查找
def func(param)
(以“def”开头的行),但我认为这不是一个好的做法
def factorial(x):
    '''int f(int x); returns the factorial of an integer number'''
    #code here

>>> factorial.__doc__
'int f(int x); returns the factorial of an integer number'
getattr(myObject, 'factorial', '3')()