关于python:将self对象传递给需要此类型的函数

Passing self object to function that requires this type

我想写一个类函数,它将信号对象作为参数,并返回其副本。然后我想用一个返回自变量副本的实例函数来重载这个函数。我有以下代码:

1
2
3
4
5
6
7
8
9
10
@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)

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

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

  • 是否正确使用python函数重载机制?

  • 如何将*这个参数传递给我的类中的类函数?


  • 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)一样)。你的问题是,你会被相似名称引起的递归所困扰。