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

Python继承问题:子类修改父类类属性后,如何让父类方法调用该属性

解决Python子类调用父类方法时默认参数使用子类类属性的问题

问题核心在于:Python函数的默认参数是在定义阶段绑定值的。父类Parent的family_number方法定义时,kids=Kids会直接绑定当时的Parent.Kids=2,子类Child重写Kids后,默认参数不会自动更新为子类的值。

要实现需求,只需修改父类方法,将默认参数设为None,在方法内部动态获取当前实例所属类的Kids属性,无需重写方法或修改属性类型:

class Parent:
    Kids = 2
    def family_number(self, kids=None):
        # 若未传入参数,动态获取当前类的Kids属性
        if kids is None:
            kids = self.__class__.Kids
        return kids + 2

class Child(Parent):
    Kids = 3

测试验证:

# 父类实例调用
parent_instance = Parent()
print(parent_instance.family_number())  # 输出 4(2+2)

# 子类实例调用
child_instance = Child()
print(child_instance.family_number())  # 输出 5(3+2)

# 传入自定义参数时正常工作
print(child_instance.family_number(5))  # 输出 7(5+2)

这种方式的优势:

  • 无需在子类中重写family_number方法,减少代码冗余
  • 保持Kids为类属性,符合需求
  • 动态获取类属性,后续若有其他子类重写Kids,也能自动适配

内容的提问来源于stack exchange,提问作者Sikafica

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:00:03