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

Python中如何使子类实例的类名属性返回父类类名

解决方案:让子类实例获取父类类名

要让子类实例拿到父类A的类名,不用额外加变量或显式设置,你可以用以下两种简洁方法:

方法一:直接引用父类自身的类名

在父类A的__init__方法里,直接用A.__name__代替type(self).__name__,这样不管子类怎么继承,这个值固定是父类A的名称:

class A:
    def __init__(self, obj={}, num=0):
        self.name = A.__name__
        self.obj = obj
        self.num = num

    def add_to_db(self):
        pass


class B(A):
    def __init__(self):
        super().__init__()

    def method1(self):
        print("b method")

a = B()
print(a.name)  # 输出:A

方法二:通过类的继承关系动态获取

如果不想硬编码父类名称,可利用self.__class__.__base__拿到子类的直接父类,再取其类名,适合父类可能变化的场景:

class A:
    def __init__(self, obj={}, num=0):
        self.name = self.__class__.__base__.__name__
        self.obj = obj
        self.num = num

    def add_to_db(self):
        pass


class B(A):
    def __init__(self):
        super().__init__()

    def method1(self):
        print("b method")

a = B()
print(a.name)  # 输出:A

注意事项

  • 方法二的__base__只返回第一个直接父类,如果你是多重继承场景,可能需要用__bases__(返回所有父类元组)并根据需求选择。
  • 两种方法都不需要额外添加变量,也不用显式在子类里设置名称,完全符合你的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 13:13:33