Python类变量raise_amount与实例salary相乘返回None问题求助
问题根因
你写的apply_raise方法没有设置显式返回值,Python中所有函数/实例方法如果没有写return语句,默认会返回None,因此你直接打印该方法的调用结果就会输出None。
补充说明:你写的调薪逻辑本身是生效的,调用方法后实例的salary属性已经被更新,只是方法本身没有返回值,所以打印调用结果得到None。
另外你调用实例方法的写法可以更规范,不需要通过类名传递实例参数,直接用实例调用即可。
修复方案
根据你的使用需求可以选两种修改方式:
方式1:需要方法直接返回调薪后的薪资
修改apply_raise方法,新增return语句:
def apply_raise(self): self.salary = int(Person.raise_amount * self.salary) # 新增返回调薪后薪资 return self.salary
调用时改用规范的实例调用写法:
print(prs_1.apply_raise()) print(prs_2.apply_raise()) print(prs_3.apply_raise())
方式2:不需要方法返回值,仅更新实例薪资属性
先调用方法更新属性,再打印实例的salary属性或者你已经实现的street_name_and_house_nr_salary方法即可:
# 先调用方法更新薪资 prs_1.apply_raise() prs_2.apply_raise() prs_3.apply_raise() # 再打印结果 print(prs_1.salary) print(prs_2.street_name_and_house_nr_salary()) print(prs_3.salary)
内容的提问来源于stack exchange,提问作者Kinsley. N
相关产品推荐
相关产品推荐

