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

Python OOP中用一个对象方法修改另一不同类对象属性失败如何解决?

代码问题分析
  • second类的change_first方法没有设计入参,无法接收待处理的另一个类的实例对象,无法跨对象操作属性
  • 方法内部的name="not first"仅为局部变量赋值,既没有绑定到当前实例的属性,也没有指向待修改的obj1的name属性,不会对外部对象产生任何影响
  • 代码全程没有调用obj2.change_first方法,定义的修改逻辑不会自动执行
  • 额外规范问题:Python的类名推荐使用大驼峰命名法,更符合通用编码规范
修正方案

方案1:符合你原本想实现的「obj2调用自身方法修改obj1的属性」的需求

class First:
    name = "first"

class Second:
    def change_first_name(self, target_obj, new_value):
        # 直接修改传入的目标对象的name属性
        target_obj.name = new_value

obj1 = First()
obj2 = Second()

# 调用obj2的方法,传入obj1作为处理对象
obj2.change_first_name(obj1, "not first")

print(obj1.name) # 输出结果为:not first

方案2:完全匹配你给出的obj1.method(obj2.property)参考语法

class First:
    name = "first"
    def update_self_name(self, input_property):
        self.name = input_property

class Second:
    name = "second"

obj1 = First()
obj2 = Second()

# 完全匹配参考语法,obj1调用自身方法,传入obj2的属性作为参数
obj1.update_self_name(obj2.name)
print(obj1.name) # 输出结果为:second

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:24:03