You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检查某个函数是否为list对象的属性?

解决方法:检查函数是否属于列表元素/列表属性

首先,你遇到的TypeError原因很明确:hasattr()的第二个参数必须是字符串类型的属性名称,但你直接传入了函数对象test,不符合参数要求,所以触发了报错。

接下来分两种场景给你对应解决方案,先匹配你的真实需求:


场景1:你想检查函数对象是否是列表中的元素

从你的代码list = [test]来看,你应该是把函数放进了列表,想要判断这个函数是不是列表的成员。这种情况完全不需要用hasattr(),直接用Python的in关键字就能搞定:

def test(): return "test"
# 重要提醒:别用list当变量名!这是Python内置的列表类型,会覆盖内置功能
my_list = [test]

if test in my_list:
    print("yes")  # 会输出yes
else:
    print("no")

一定要避开用list作为变量名,否则后续无法正常使用list()创建新列表(比如list([1,2,3])会失效)。


场景2:你想检查列表对象是否有名为test的属性

如果你确实是想检查列表(内置list类或某个列表实例)是否存在名为test的属性,那需要把hasattr()的第二个参数改成字符串"test":

def test(): return "test"

# 检查内置list类是否有test属性
if hasattr(list, "test"):
    print("yes")
else:
    print("no")  # 输出no,因为内置list类本身没有这个属性

不过要注意:普通的列表实例默认不能直接添加自定义属性,如果你想给某个列表实例绑定test属性,需要自定义list的子类:

class CustomList(list):
    pass

def test(): return "test"
my_list = CustomList()
my_list.test = test  # 给自定义列表实例添加属性

if hasattr(my_list, "test"):
    print("yes")  # 这里会输出yes
else:
    print("no")

总结一下:

  • 检查函数是否是列表元素 → 用in关键字
  • 检查列表是否有指定名称的属性 → 给hasattr()传字符串属性名,自定义列表子类才能添加自定义属性

内容的提问来源于stack exchange,提问作者ReidTJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:27:48