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
相关产品推荐
相关产品推荐

