打印Python Person类属性时出现表达式含赋值语法错误如何解决
错误原因
- 直接触发报错的核心问题:你在
print()函数的参数中写了unit.address=address,这是赋值操作,Python不允许在函数调用的参数表达式内执行=赋值,因此解释器抛出了对应错误,提示你是否想写==等值判断。 - 代码还存在两处隐藏问题,修复完打印语句后仍会报错:
- 构造方法名拼写错误:Python的类构造方法是双下划线包裹的
__init__,你当前写的单下划线_init_不会被识别为构造函数,实例化类时会直接报错。 - 类变量修改逻辑错误:原代码中用
unit.personNo += 1修改类变量personNo,实际会给每个实例单独创建一个personNo属性,不会修改全局的类变量计数。
修复方法
修正构造方法拼写、删除print语句中冗余的赋值内容、调整类变量修改逻辑即可,修复后的完整代码如下:
class Person: personNo = 0 def __init__(unit, first_name, last_name, age, address): unit.personsfirstname = first_name unit.lastname = last_name unit.personsage = age unit.address = address Person.personNo += 1 def ShowInfo(unit): print("Ονομα: " + unit.personsfirstname + " Επιθετο: " + unit.lastname + " Ηλικια: " + unit.personsage + " Οδος: " + unit.address) person1 = Person("George", "Stefanopoulos", "55", "Alpha street 33") person2 = Person("Μαρια", "Πενταγιωτισα", "25", "Παπαλαμπρενας 28") # 测试打印功能 person1.ShowInfo() person2.ShowInfo()
内容的提问来源于stack exchange,提问作者ronin512
相关产品推荐
相关产品推荐

