【Python】父类获取调用它的子类的名字
具体解释:
如果在父类中,某个方法需要知道被调用的子类的名字的时候,可以使用。例如,为每个子类分配对应的操作或者文件/状态信息储存位置/变量
示例
# -*- coding:utf-8 -*-
# @FileName :父类与子类.py
# @DateTime :2022/3/30 23:16
# @Author :wanglb
class BaseClassTest(object):
def __init__(self):
...
@classmethod
def class_name(cls):
return cls.__name__
def sub_class_name(self):
print(self.class_name())
class Test1(BaseClassTest):
def __init__(self):
super(Test1, self).__init__()
def test_class_name(self):
print(self.class_name())
class Test2(BaseClassTest):
def __init__(self):
super(Test2, self).__init__()
def test_class_name(self):
print(self.class_name())
if __name__ == '__main__':
test1 = Test1()
test1.sub_class_name()
test2 = Test2()
test2.test_class_name()
运行结果为
Test1
Test2
代码解释
- 在父类中写了一个类方法
class_name
,参数为cls
,直接返回cls.__name__
,即为当前子类的名字 - 父类中
sub_class_name
,是测试,在父类中,可以正常读取到子类的名字 - 子类中
test_class_name
,是测试,在子类中,也可以知道子类自己的名字