python - 如何检查函数是否是列表的属性?
问题描述
所以,我试图检查一个函数是否是一个列表的属性。不幸的是,我找不到办法做到这一点。我试过这段代码:
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
我想知道一种工作方式,所以如果你知道如何,请告诉我。
解决方案
你问的问题是如何停止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
。
推荐阅读
- c - 用于 C 实现的 Xcode - 随机生成器 - 环境问题
- javascript - onload 不能使用 'Vue-konva'
- symfony - 在 Symfony 中无法使用 encore dev-server 获取 /
- android - JW Player隐藏全屏按钮
- python-3.x - 如何关闭在 python 中使用 matplotlib 显示的图形?图像,图形和图片之间有什么区别?
- c# - 各种 SharedItems 属性的 excel 用途是什么?
- angular - 在 NgbModal 中将 ControlValueAccessor-Component 作为内容发送
- javascript - 弹性 - 进行增强查询 + 必须查询时,Desc 排序不再起作用
- r - 从数据集/变量中删除自定义(第二个)类
- python - 如何使用beautifulsoup从url中的表中返回多个页面的数据