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

如何编写可修改初始化坐标值的Python函数?现有代码未达预期

问题解决:无法修改Move对象的坐标值

你的代码无法达到预期效果,核心原因是:Python中整数属于不可变类型,传递move.x给函数时,传递的是该数值的副本,函数内修改局部变量axis不会影响原对象的x属性。

修复方案

直接传递Move对象和要修改的轴名称,通过getattr和setattr操作对象属性,这样能真正修改原对象的坐标值:

class Move:
    def __init__(self, x, y):
        self.x = x
        self.y = y


move = Move(5, 5)


def obstacle(obj, axis_name, value, plus):
    current_val = getattr(obj, axis_name)
    if current_val == value:
        delta = 1 if plus else -1
        setattr(obj, axis_name, current_val + delta)
    print(f"x = {move.x}, y = {move.y}")


obstacle(move, 'x', 5, False)

执行这段代码后,会输出x = 4, y = 5,符合你的预期。

简化写法(仅针对x轴)

如果只需要支持x轴的修改,也可以用更直白的方式实现:

class Move:
    def __init__(self, x, y):
        self.x = x
        self.y = y


move = Move(5, 5)


def obstacle(obj, value, plus):
    if obj.x == value:
        obj.x = obj.x + 1 if plus else obj.x - 1
    print(f"x = {obj.x}, y = {obj.y}")


obstacle(move, 5, False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 01:55:15