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

Python getattr()方法在HackerRank集合运算题中的作用原理是什么?

原理说明

getattr是Python的内置函数,核心作用是通过字符串形式的属性名,从指定对象中获取对应的属性/方法,你看到的那行代码可以拆成两步理解,效果和你写的if分支完全等价:

  1. 第一步:根据command字符串从集合对象A中取出对应方法
# 当command为"symmetric_difference_update"时,下面两行的效果完全一致
target_method = A.symmetric_difference_update
target_method = getattr(A, "symmetric_difference_update")
  1. 第二步:调用取出的方法,传入新集合作为参数
# 下面两行的执行效果完全一致
A.symmetric_difference_update(newSet)
target_method(newSet)

和你原有if写法的对应关系

你写的多层if判断,本质是手动做「字符串命令 -> 对应方法调用」的映射:

  • 先判断entry[0]是哪个字符串
  • 然后手动写死调用set_a对应的方法
  • 最后传入运算集合作为参数

而getattr(A, command)(newSet)是直接利用Python的动态属性特性,自动完成上面的映射逻辑:只要输入的command字符串确实是Python set类型自带的方法名,就可以直接取出方法并调用,不需要额外写分支判断。

这个写法能成立的前提是:题目给出的操作名(intersection_update、update等)刚好和Python set类的原生方法名完全一致,且参数格式也刚好匹配(只需要传入一个集合参数),所以可以直接复用这个特性简化代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 10:09:00