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
是一个可怕的名称,因为它隐藏了内置的属性。