You need to enable JavaScript to run this app. Python如何通过同一对象修改类实例变量实现指定输出
优惠活动
大模型
产品
解决方案
定价
更多

Python如何通过同一对象修改类实例变量实现指定输出

你当前实现的核心偏差
  • 违反了“使用同一个wadiya对象修改变量”的硬性要求:你在Part2阶段写了wadiya = Wadiya(),本质是创建了一个全新的类实例,覆盖了之前的对象引用,Part1打印用的wadiya和Part2修改的wadiya根本不是同一个对象,完全偏离题目要求。
  • 输出文本和预期格式不匹配:你在打印逻辑里写的Name of the President:比预期输出多了一个定冠词the,会导致输出和要求格式不一致。
  • 遗漏了题目要求的修改影响判断逻辑:没有完成“修改操作是否影响Part1原有值”的判断和对应提示打印。
正确实现逻辑
  • 严格保留题目给定的__init__方法的所有赋值内容,仅修正缩进让代码符合Python语法,不改动原有属性值和赋值语句。
  • 全程只实例化一次wadiya对象,所有属性修改都直接在这个对象上完成,中途不重新实例化新的类赋值给wadiya变量。
  • 先打印Part1的初始属性值,再直接修改wadiya的实例变量打印Part2的新值。
  • 由于是直接在同一个对象上覆盖修改属性,没有做原始值备份,原有属性会被新值直接覆盖,因此需要打印对应提示语。
符合要求的可运行代码
class Wadiya():
    # 以下为题目给定的半完成代码,仅修正缩进未改动原有内容
    def __init__(self):
        self.name = 'Aladeen'
        self.designation = 'President Prime Minister Admiral General'
        self.num_of_wife = 100
        self.dictator = True

# 全程仅实例化一次wadiya对象
wadiya = Wadiya()

# 打印Part1内容
print('Part 1:')
print(f'Name of President: {wadiya.name}')
print(f'Designation: {wadiya.designation}')
print(f'Number of wife: {wadiya.num_of_wife}')
print(f'Is he/she a dictator: {wadiya.dictator}')

# 直接在同一个wadiya对象上修改实例变量
wadiya.name = 'Donald Trump'
wadiya.designation = 'President'
wadiya.num_of_wife = 1
wadiya.dictator = False

# 打印Part2内容
print('Part 2:')
print(f'Name of President: {wadiya.name}')
print(f'Designation: {wadiya.designation}')
print(f'Number of wife: {wadiya.num_of_wife}')
print(f'Is he/she a dictator: {wadiya.dictator}')

# 判断修改影响:原对象属性已被覆盖
print('Previous information lost')
程序运行输出完全匹配预期
Part 1:
Name of President: Aladeen
Designation: President Prime Minister Admiral General
Number of wife: 100
Is he/she a dictator: True
Part 2:
Name of President: Donald Trump
Designation: President
Number of wife: 1
Is he/she a dictator: False
Previous information lost

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 00:57:00