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

如何判断Python中的派生类是否定义了自身的__init__方法?

如何区分派生类的__init__是自身定义还是继承而来?

当然有办法区分!下面给你分享几种简单实用的方法:

方法1:检查类的__dict__字典

每个Python类的__dict__属性只会存储自身定义的属性和方法,继承来的成员不会出现在这里。所以直接判断__init__是否在类的__dict__里就能快速区分:

class A:
    def __init__(self):
        pass

class B(A):
    pass

class C(A):
    def __init__(self):
        pass

# 检查__init__是否是类自身定义的
print('__init__' in B.__dict__)  # 输出 False,B的__init__是继承自A
print('__init__' in C.__dict__)  # 输出 True,C自己定义了__init__

方法2:利用方法的__owner__属性(Python 3.3+)

对于类方法和实例方法,Python 3.3及以上版本提供了__owner__属性,它会指向该方法最初所属的类。通过对比这个属性和当前类,就能明确判断方法是否是自身定义的:

print(B.__init__.__owner__ is B)  # 输出 False,__init__的归属类是A
print(C.__init__.__owner__ is C)  # 输出 True,__init__的归属类是C自己

补充说明

如果子类重写了__init__但在方法内部调用了super().__init__(),这依然属于子类自身定义的方法——因为方法本身是子类声明的,只是逻辑上复用了父类的实现,上面的两种方法依然能正确识别这种情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 20:32:55