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

如何在Python父类中获取最终实例化对象的子类名称?

无需手动传参,让基类自动识别实例化子类

当然可以实现!Python的对象模型已经帮你做好了这件事,根本不用手动传递src参数。

核心思路

在基类Main的__init__方法中,self指代的是最终被实例化的子类对象,所以直接通过self.__class__.__name__就能拿到子类的类名。如果需要完整的类对象,直接用self.__class__即可。

修改后的完整代码

class Main:
    def __init__(self):
        # 获取实例所属子类的名称,转小写匹配你原来的输出格式
        subclass_name = self.__class__.__name__.lower()
        print(f"hello from {subclass_name}")

class One(Main):
    def __init__(self):
        super().__init__()

class Two(Main):
    def __init__(self):
        super().__init__()

# 测试实例化
One()
Two()

执行输出

hello from one
hello from two

额外说明

  • 如果你的继承层级更复杂(比如子类还有子类),self.__class__依然会指向最底层的实例化类,完全符合你的需求。
  • 也可以用type(self).__name__替代self.__class__.__name__,两者在普通类的场景下效果一致,type()更偏向于获取对象的实际运行时类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:00:13