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

如何获取dataclass属性数量 及统计类中动态添加的属性总数

解决方案

你可以通过统计Recipes类下类型为Recipe的自定义属性数量得到食谱总数,无需修改现有存储结构,符合你不能用列表/字典存储食谱的要求。

替换占位符的代码

你只需要把print语句的占位符替换为以下内容即可:

sum(1 for attr in dir(Recipes) if isinstance(getattr(Recipes, attr), Recipe))

实现逻辑

  • dir(Recipes)会返回Recipes类所有属性的名称字符串
  • 遍历所有属性名称,用getattr(Recipes, attr)取出对应的属性值
  • 用isinstance()判断属性值是否为Recipe类的实例,过滤掉类内置的魔法属性和其他非食谱属性,统计符合要求的属性数量即可

完整可运行代码

from dataclasses import dataclass

@dataclass
class Recipe:
    ing1: str
    ing2: str
    ing3: str
   
class Recipes():
    pass
   
# 注意:你原有代码的setattr行末尾缺少右括号,这里已经补充
setattr(Recipes, 'Salad', Recipe('cabbage', 'lettuce', 'potato'))
setattr(Recipes, 'Salad2', Recipe('tomato', 'lettuce', 'ranch'))
print("There are %s number of recipes!" % sum(1 for attr in dir(Recipes) if isinstance(getattr(Recipes, attr), Recipe)))
# 输出:There are 2 number of recipes!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 22:15:05