You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:20:21