首页 > 解决方案 > 如何检查函数是否是列表的属性?

问题描述

所以,我试图检查一个函数是否是一个列表的属性。不幸的是,我找不到办法做到这一点。我试过这段代码:

def test():
    return "test"

list = [test]

if hasattr(list, test):
    print("yes")
else:
    print("no")

但这给了我这个错误:

Traceback (most recent call last):
  File "test.py", line 6, in <module>
    if hasattr(list, test):
TypeError: hasattr(): attribute name must be string

我想知道一种工作方式,所以如果你知道如何,请告诉我。

标签: pythonattributes

解决方案


你问的问题是如何停止hasattr()给你一个 TypeError。修复它的方法是在错误消息中:属性名称必须是字符串。因此,如果您这样做,您将不会收到错误消息,但您也不会得到您期望的答案:

>>> hasattr(list,'test')
False

那是因为test是列表的元素,而不是列表的属性。另一方面,如果您这样做:

>>> hasattr(list,'index')
True

你会看到这index 的一个属性list,因为你可以

>>> list.index(test)
0

如果您想知道test是否在其中,请list使用in

>>> test in list
True

最后,不要调用变量list


推荐阅读