gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 05:19:26 34 4
gpt4 key购买 nike

我想编写一个类函数,它将 Signal 对象作为参数并返回其副本。然后我想用一个返回 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 参数传递给类中的类函数?

最佳答案

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))。您的问题是您被相似名称引起的递归所困扰。

关于python - 将自身对象传递给需要此类型的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40793370/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com