gpt4 book ai didi

类定义外的Python函数赋值导致参数异常

转载 作者:行者123 更新时间:2023-11-28 22:51:48 24 4
gpt4 key购买 nike

我在动态编程环境中工作,我可能需要定义(或重新定义)类函数。所以考虑这个例子:

def func(self):
print("hello2 \n")

class ManClass:
def __init__(self):
pass
def func1(self):
print("hello1\n")

a = ManClass()

a.func1()
hello1

a.func2 = func
>>> a.func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: func() takes exactly 1 argument (0 given)

如果 func2() 已在类内部定义 - a.func2() 将被解释为 ManClass.func2(a) - 但现在我在外部分配它,它似乎期待一个参数。我该如何解决这个问题,但更重要的是,为什么这两个定义的解释方式存在差异?

最佳答案

您没有将 func 添加到类中,而是将其添加到实例中。请尝试 ManClass.func2 = func

a.func2 = funcfunc 作为名为 func2 的实例属性添加到类的 a 实例>,而不是作为实例成员方法(这实际上只是对基础类对象上的可调用成员的特殊处理)。

或者,您也可以使用 MethodType 将成员方法添加到单个实例,正如@jonrsharpe 在他的回答中指出的那样。

关于类定义外的Python函数赋值导致参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21149849/

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