[我只是试图用相似的父类来创建一些具有类似类的系统,该类在它们之间动态分配其方法,这看起来像一个函数“ transform(from,to)”,其功能类似于from.foo = to.foo
所以,您看到的是,使用Python遇到了我的问题,所以我寻求帮助
我的第一次尝试是
def transform(a, b):
a.foo = b.foo
class A:
def foo(self):
pass
class B(A):
def foo(self):
print("bar")
transform(self, C())
class C(A):
def foo(self):
print("foo")
transform(self, B())
b = C()
b.foo()
b.foo()
b.foo()
b.foo()
我想从中得到类似
foo
bar
foo
bar
但是我得到
foo
bar
bar
bar
最有趣的时刻是第一次转换有效,但接下来是。
我的下一个尝试是
class A:
def foo(self):
pass
def transform(self, to):
self.foo = to.foo
class B(A):
def foo(self):
print("bar")
self.transform(C())
class C(A):
def foo(self):
print("foo")
self.transform(B())
b = C()
b.foo()
b.foo()
b.foo()
b.foo()
我得到了相同的结果。您知道如何管理此转换吗?
在您的代码中,它首先运行a.foo = b.foo
,其中a
是在b = C()
创建的对象,b是在B()
创建的对象。然后,当下一次运行a.foo()
时,它将运行B的foo(self)
,其中self
是该B()
对象。在那里,它运行transform(self, C())
,其中self
仍然是用B()
创建的对象,not