【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,是测试,在子类中,也可以知道子类自己的名字
本文实例讲述了Python实现子类调用父类方法。分享给大家供大家参考。具体实现方法如下: python和其他面向对象语言似,每个可以拥有一个或者多个父类,它们从父类那里继承了属性和方法。如果一个方法子类的实例中被调用,或者一个属性在子类的实例中被访问,但是该方法或属性在子类中并不存在,那么就会自动的去其父类中进行查找。 继承父类后,就能调用父类方法和访问父类属性,而要完成整个集成过程,子类是需要调用的构造函数的。 子类不显式调用父类的构造方法,而父类构造函数初始化了一些属性,就会出现问题 如果子类父类都有构造函数,子类其实是重写了父类的构造函数,如果不显式调用父类构造函数,父类的构造
利用os.listdir()和string.endswith()函数实现。 在进行视觉相关任务编程时, 常常需要读出文件夹下的图片。但有的时候会包含其他后缀的文件,这时候需要将特定后缀的文件名依次读出。 python的字符串提供了一个匹配结尾的函数string.endswith(),其用法如下: string.endswith(v...
PHP中通过 __CLASS__ 可以获取当前的类名,但它是静态绑定的,如果不在子类里重载的话,那么继承父类方法所得到的依旧是父类的名称,而不是子类的名称,比如: class Base { function __construct() { echo __CLASS__; static function getClass() { echo __CLASS__; class Child extends Base
Python中创建父类子类方法是使用class关键字定义,然后在子类定义中使用父类的名称作为参数。例如,定义一个父类Animal和一个子类Dog,可以使用以下代码: class Animal: def __init__(self, name): self.name = name class Dog(Animal): def __init__(self, name, breed): super().__init__(name) self.breed = breed 在这个例子中,Dog是Animal的子类,它继承了Animal的属性和方法。在Dog的构造函数中,使用super()函数调用父类的构造函数,以便初始化父类的属性。
CSDN-Ada助手: 非常感谢博主分享这篇有关快速排序求第N大数字的博客,您的文章讲解清晰易懂,让我这个初学者也能够理解。您的知识与经验对我们这些学习者来说非常宝贵,希望您能继续分享更多有价值的知识。再次感谢您的付出和创作! 为了方便博主创作,提高生产力,CSDN上线了AI写作助手功能,就在创作编辑器右侧哦~(https://mp.csdn.net/edit?utm_source=blog_comment_recall )诚邀您来加入测评,到此(https://activity.csdn.net/creatActivity?id=10450&utm_source=blog_comment_recall)发布测评文章即可获得「话题勋章」,同时还有机会拿定制奖牌。 【Python】快速排序求第N大的数字 远方_流浪: 缩短代码优化 1. 三个列表初始化 left, middle, right = [[]] * 3 2. 循环写到一行 _ = [left.append(each) if each < p else (middle.append(each) if each == p else right.append(each)) for each in lis] 期待更多优化见解 【Python】PDF转图片 远方_流浪: 文章开头写的,要安装PyMuPDF,不要安装fitz 如果不小心安装了就卸载掉,只安装PyMuPDF 【Python】PDF转图片 李同学va: module 'fitz' has no attribute 'open' 为啥报这个错误啊 【Python练习】使用字典统计字符出现频率 Curz酥: 另一种写法 [code=python] n = input().split(',') if n[0] < '0' or n[0] > '9': print('请输入一个数字。') else: dic = {} for i in n: dic[eval(i)] = dic.get(eval(i), 0) + 1 print(dic) [/code]