Я пытаюсь создать прокси-класс для другого класса. Я хочу, чтобы этот класс передавался в прокси в его конструкторе, а затем, чтобы прокси динамически создавал все те же методы этого класса на себе.
Это то, что я знаю до сих пор, что не работает:
import inspect
from optparse import OptionParser
class MyClass:
def func1(self):
print 'MyClass.func1'
def func2(self):
print 'MyClass.func1'
class ProxyClass:
def __init__(self):
myClass = MyClass()
members = inspect.getmembers(MyClass, predicate=inspect.ismethod)
for member in members:
funcName = member[0]
def fn(self):
print 'ProxyClass.' + funcName
return myClass[funcName]()
self.__dict__[funcName] = fn
proxyClass = ProxyClass()
proxyClass.func1()
proxyClass.func2()
Я думаю, что это строка self.__dict__[funcName] = fn
, которую нужно изменить, но я не уверен, что делать?
Я новичок в Python, поэтому, если есть совершенно другой способ Pythonic сделать это, я тоже был бы рад услышать об этом.
__getattr__
? - person Daniel Roseman   schedule 05.09.2017