兩個不同的類共享相同的方法,我有類:如何在蟒蛇
class A(object):
def do_computing(self):
print "do_computing"
然後,我有:
new_class = type('B', (object,), {'a': '#A', 'b': '#B'})
我想實現的是做出類的所有方法和屬性A類的成員.A類可以有0到N個這樣的元素。我想讓他們B類的所有成員
到目前爲止,我得到:
methods = {}
for el in dir(A):
if el.startswith('_'):
continue
tmp = getattr(A, el)
if isinstance(tmp, property):
methods[el] = tmp
if isinstance(tmp, types.MethodType):
methods[el] = tmp
instance_class = type('B', (object,), {'a': '#A', 'b': '#B'})
for name, func in methods.items():
new_method = types.MethodType(func, None, instance_class)
setattr(instance_class, name, new_method)
但後來當我運行:
instance().do_computing()
我得到一個錯誤:
TypeError: unbound method do_computing() must be called with A instance as first argument (got B instance instead)
爲什麼我必須這樣做?我們有很多遺留代碼,我需要花哨的對象來假裝它們是舊對象,但真的。
一件更重要的事情。我不能使用繼承,在後臺發生很多魔術。
出了什麼問題,從具有乙繼承? –
不能使用繼承。 – Drachenfels