Python OOP问题:无法获取对象内getAge函数的返回值
问题解决:获取Person类getAge方法的返回值
核心问题
你最后一行代码print(Person.getAge)只是打印了方法本身的对象引用,并没有调用方法获取返回值。而且类的实例方法(带self参数的方法)必须通过实例对象来调用,或者调用时手动传入实例(不推荐)。
正确调用方式
直接通过创建好的实例p1调用getAge()方法即可:
print(p1.getAge())
代码优化补充
你的getAge方法存在两个小问题:
- 年份处理逻辑有漏洞:如果出生年份是1995(格式
22/06/95),加2000会变成2095,导致计算出负数年龄。 - 未考虑生日是否已过:比如当前是5月,用户生日是6月,直接用年份差会多算1岁。
优化后的完整代码:
from datetime import date class Person: def __init__(self, name, dob, cob): self.name = name self.dob = dob self.cob = cob def setName(self, name): self.name = name def getAge(self): today = date.today() # 拆分出生日期的日、月、年份后缀 day, month, year_suffix = map(int, self.dob.split('/')) # 根据后缀判断完整出生年份(适配19xx和20xx) birth_year = 1900 + year_suffix if year_suffix >= 50 else 2000 + year_suffix age = today.year - birth_year # 如果当前日期还没到今年的生日,年龄减1 if (today.month, today.day) < (month, day): age -= 1 return age p1 = Person('Jane', '22/06/02', 'England') p1.setName("Joe") print(p1.name) # 正确调用getAge方法获取返回值 print(p1.getAge())
内容的提问来源于stack exchange,提问作者Corse
相关产品推荐
相关产品推荐

