如何通过type变量将多个相似Python类方法合并为一个?
合并方法实现方案
可以通过传入type参数,结合Python的getattr()函数动态获取对应属性,将三个方法合并为一个通用方法:
def getID(self, obj, type): # 验证type合法性,避免无效参数 valid_types = ['input', 'output', 'operator'] if type not in valid_types: raise ValueError(f"type必须是{valid_types}中的一个") # 根据type动态匹配对应的实例属性 ids_attr = getattr(self, f"{type}IDs") nodes_attr = getattr(self, f"{type}Nodes") tempID = ids_attr.pop(0) nodes_attr[tempID] = obj self.objects[tempID] = obj return tempID
使用示例
调用时只需传入对应type参数即可替代原有方法:
- 原
getInputID(obj)→ 现在用getID(obj, type='input') - 原
getOutputID(obj)→ 现在用getID(obj, type='output') - 原
getOperatorID(obj)→ 现在用getID(obj, type='operator')
关键逻辑说明
- 参数校验:提前限制
type的可选值,避免因错误参数导致属性查找失败 - 动态属性获取:通过
getattr()根据type拼接属性名,自动匹配对应的xxxIDs和xxxNodes,省去重复的属性调用代码 - 核心逻辑复用:三个方法的核心操作(取ID、绑定节点、绑定对象、返回ID)完全一致,统一放在通用方法中执行
内容的提问来源于stack exchange,提问作者Te_Ke
相关产品推荐
相关产品推荐

