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

Python中如何循环对3个不同对象执行相同操作?

正确批量调用电机setRegister方法的实现方式

你之前的错误原因很明确:列表里存的是电机变量的字符串名称,而不是实际的电机对象。循环时i是"motor1"这类字符串,字符串当然没有setRegister方法,所以报了AttributeError。

下面是两种正确的实现方式:

方法一:直接存储电机对象列表(推荐)

如果motor1、motor2、motor3已经是实例化好的电机对象,直接把它们放进列表循环即可:

# 将实际的电机对象存入列表
motors = [motor1, motor2, motor3]

# 遍历列表调用方法
for motor in motors:
    motor.setRegister(0x00)

这种方式代码清晰直观,可读性和安全性都更高,是优先推荐的写法。

方法二:动态获取命名空间中的变量(适合大量规律命名的电机)

如果电机数量很多,且变量名是motor1、motor2...这类有规律的命名,可以通过全局/局部命名空间动态获取对象:

# 循环获取motor1到motor3的对象并调用方法
for i in range(1, 4):
    # 从全局命名空间中取出对应变量
    motor = globals()[f"motor{i}"]
    motor.setRegister(0x00)

注意:这种方式依赖变量名的规律,且不如直接存对象列表清晰,只有在电机数量较多时才建议使用。

注意事项

  • 无论用哪种方法,都要确保motor1、motor2、motor3在循环执行前已经被正确实例化,否则会触发NameError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:02:40