Python 类方法交换保留旧类';自我';?

Python 类方法交换保留旧类';自我';?,python,python-3.x,Python,Python 3.x,我在实例方法(python3)之间正确地交换函数时遇到问题 假设我有一门课: class SomeClass: def pSelf(self): # Do stuff with self.variables 在我的特殊情况下,这个类有两个实现,一个是正确的版本,另一个是错误的版本 现在我将实例化SomeClass类型的两个对象(标记C表示正确,标记B表示错误): 我希望objTwo具有pSelf的正确实现: objTwo.pSelf = objOne.pSelf 但

我在实例方法(python3)之间正确地交换函数时遇到问题

假设我有一门课:

class SomeClass:

    def pSelf(self):
        # Do stuff with self.variables
在我的特殊情况下,这个类有两个实现,一个是正确的版本,另一个是错误的版本

现在我将实例化SomeClass类型的两个对象(标记C表示正确,标记B表示错误):

我希望objTwo具有pSelf的正确实现:

objTwo.pSelf = objOne.pSelf
但是,objOne的pSelf方法必须与objOne相结合,因此:

objTwo.pSelf() # This will do stuff with objOne.self!
我已尝试导入类型并执行以下操作:

objTwo.pSelf = types.MethodType(objOne.pSelf, objTwo)
据我所知,这正确地将pSelf函数绑定到objTwo, 然而,随后我收到一个错误的参数错误-可能是因为objTwo.pSelf现在收到两个自变量


我不知道该怎么做,在两个(类似的)类之间交换函数的正确方法是什么?

你需要先获得该方法的函数,然后再从中生成一个方法和一些对象

objTwo.pSelf = types.MethodType(objOne.pSelf.__func__, objTwo)

我想指出的是,这是一个糟糕设计的标志。

您需要先获得该方法的函数,然后再使用它和一些对象创建一个方法

objTwo.pSelf = types.MethodType(objOne.pSelf.__func__, objTwo)

我想说的是,这是一个糟糕设计的标志。

什么是糟糕设计?出现这种瓶颈的原因是,我需要对两个类函数进行测试,同时保持子函数(在交换函数中使用)不变。顺便谢谢你!好吧,如果是为了模仿,那没问题,但通常情况下,使用策略模式实现具有不同行为的实例会更好。什么是糟糕的设计?出现这种瓶颈的原因是,我需要对两个类函数进行测试,同时保持子函数(在交换函数中使用)不变。顺便谢谢你!好吧,如果是为了模仿,那没关系,但通常情况下,最好用策略模式实现具有不同行为的实例。