动态类方法分配

问题描述 投票:0回答:1

[我只是试图用相似的父类来创建一些具有类似类的系统,该类在它们之间动态分配其方法,这看起来像一个函数“ 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()

我得到了相同的结果。您知道如何管理此转换吗?

python class
1个回答
1
投票

在您的代码中,它首先运行a.foo = b.foo,其中a是在b = C()创建的对象,b是在B()创建的对象。然后,当下一次运行a.foo()时,它将运行B的foo(self),其中self是该B()对象。在那里,它运行transform(self, C()),其中self仍然是用B()创建的对象,not

© www.soinside.com 2019 - 2024. All rights reserved.