将自身对象传递给需要此类型的函数
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()
但是在调用函数复制后,我的代码进入无限递归循环并抛出此站点的名称作为异常。我的问题是:
我是否正确使用了python函数重载机制?
如何将 *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)
一样)。您的问题是您被相似名称引起的递归所困扰。
我想编写一个 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()
但是在调用函数复制后,我的代码进入无限递归循环并抛出此站点的名称作为异常。我的问题是:
我是否正确使用了python函数重载机制?
如何将 *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)
一样)。您的问题是您被相似名称引起的递归所困扰。