将自身对象传递给需要此类型的函数

Passing self object to function that requires this type

我想编写一个 class 函数,它将 Signal 对象作为参数并 returns 它的副本。然后我想用一个 returns self 参数副本的实例函数重载这个函数。我有以下代码:

@classmethod
def copy(cls, arg):
    if not isinstance(arg, Signal):
        raise ValueError("Argument must be of type Signal")
    result = Signal()
    result.framerate = arg.framerate
    return result

def copy(self):
    return FragmentsSignal.copy(self)

Signal1 = Signal(100)
Signal2 = signal1.copy()

但是在调用函数复制后,我的代码进入无限递归循环并抛出此站点的名称作为异常。我的问题是:

  1. 我是否正确使用了python函数重载机制?

  2. 如何将 *this 参数传递给 class 中的 class 函数?

Do I properly use python function overloading mechanism?

不能有两个同名的函数; Python 不支持基于参数类型的重载。第二个函数的定义将覆盖第一个函数的定义。

本质上,您是在一遍又一遍地调用非 classmethod 函数 copy。您需要重命名其中之一才能使其有效工作。

How can I pass *this argument to a class function within my class?

我猜你指的是 self;将 self 传递给另一个函数与任何其他 arg 一样完成(就像您所做的 FragmentsSignal.copy(self) 一样)。您的问题是您被相似名称引起的递归所困扰。