如何在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
相关产品推荐
相关产品推荐

