gpt4 book ai didi

python - getattr 错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:03:38 27 4
gpt4 key购买 nike

我要去 Calling a function of a module from a string with the function's name in Python但是每当我在我的程序中调用我的类时,它都会给我这个错误:TypeError: unbound method bar() must be called with foo instance as first argument (got nothing instead)

谁能帮帮我

最佳答案

这是产生您描述的问题的典型情况。

class Foo(object):
def bar(self,x):
print(x)

foo=Foo()

调用 gettatrr(Foo,'bar') 返回未绑定(bind)的方法,Foo.bar

getattr(Foo,'bar')(1)

结果

TypeError: unbound method bar() must be called with Foo instance as first argument (got int instance instead)

Foo.bar 方法被称为“未绑定(bind)”,因为在调用时不会将任何实例(例如 foo)作为第一个参数提供。毕竟,如果只提供类 Foo 怎么可能呢?

另一方面,如果您提供类的实例:

getattr(foo,'bar')(1)

产量

1

因为 foo.bar 是一个“绑定(bind)”方法——当调用 foo.bar 时,foo 将作为第一个参数提供.

附言。您的错误消息显示,“...调用 foo 实例 ...”。与我上面发布的错误消息相比,您的类似乎被称为小写的 foo。请注意 PEP8 style guide建议总是用大写字母命名类,用小写字母命名实例。这样做将帮助您避免此错误。

关于python - getattr 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7191852/

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