1

次のコードがあります。

import functools
import random
import inspect 

def myfirst(a, b):
    return a + b

def mysecond(c, d):
    return c - d

def returnAPartial():  
    myrand = random.randrange(0,2)
    if myrand == 1:
        return functools.partial(myfirst, 1)
    else:
        return functools.partial(mysecond, 2)

私はそれをpythonインタラクティブにロードして実行します:

myfunc = returnAPartial()

myfunc が myfirst 関数または mysecond 関数の部分的なアプリケーションであるかどうかを (プログラムで) チェックしたい (計算ではなく、例は少し不自然です) これまでのところ、inspect.getmembers()を使用しましたが、適切な属性が見つかりませんでしたチェックする?

4

2 に答える 2

5

partialオブジェクトには、必要なfunc属性があります。

 myfunc = returnAPartial()
 print myfunc.func # <function mysecond at 0x10c918488>
于 2012-11-15T10:27:04.810 に答える
1

内部helpコマンドは、いくつかのヒントを与えることができます:

>import _functools
>help(_functools.partial)
...
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |
 |  args
 |      tuple of arguments to future partial calls
 |
 |  func
 |      function object to use in future partial calls
 |
 |  keywords
 |      dictionary of keyword arguments to future partial calls
 |
于 2012-11-15T10:31:04.053 に答える