Я должен признать, что я не совсем понимаю, почему вы хотите, чтобы f и g были внутри класса Foo, но работает следующее:
>>> class Foo(object):
... @staticmethod
... def f(x, y, z):
... return x+y+z
...
>>> Foo.g = numpy.frompyfunc(Foo.f, 3, 1)
>>> i = Foo()
>>> i.g(5, 6, 7)
18
РЕДАКТИРОВАТЬ: так как вы хотите использовать данные экземплярав вашем методе вам действительно нужен метод bound :
>>> class Foo(object):
... def f(self, x, y, z):
... return x+y+z
...
>>> i = Foo()
>>> i.g = numpy.frompyfunc(i.f, 3, 1)
>>> i.g(5, 6, 7)
18
Конечно, в реальном коде вы, вероятно, захотите присвоить g в Foo.__init__
, а не внекласс:
>>> class Foo(object):
... def __init__(self):
... self.g = numpy.frompyfunc(self.f, 3, 1)
... def f(self, x, y, z):
... return x+y+z
...
>>> i = Foo()
>>> i.g(5, 6, 7)
18