Python 如何检查函数是否是列表的属性?

Python 如何检查函数是否是列表的属性?,python,attributes,Python,Attributes,所以,我试图检查函数是否是列表的属性。不幸的是,我找不到一个方法来做这件事。我尝试了以下代码: 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>

所以,我试图检查函数是否是列表的属性。不幸的是,我找不到一个方法来做这件事。我尝试了以下代码:

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
回溯(最近一次呼叫最后一次):
文件“test.py”,第6行,在
如果hasattr(列表,测试):
TypeError:hasattr():属性名称必须是字符串

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

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

>>> hasattr(list,'test')
False
这是因为
test
是列表的一个元素,而不是列表的一个属性。另一方面,如果您这样做:

>>> hasattr(list,'index')
True
您将看到
index
list
的一个属性,因为您可以

>>> list.index(test)
0
如果您想确定
测试
是否在
列表中
,请使用
中的

>>> test in list
True

最后,如果在列表中进行测试,请不要调用变量
list

?顺便说一句,列表的内容不是它的属性,
list
是一个可怕的名称,因为它隐藏了内置的属性。