zoukankan      html  css  js  c++  java
  • Python self.__class__.__name__、self.__class__.__bases__ 、self.__class__.mro() 获取当前类名称、父类、以及所有祖先类

    上面三个方法具体区别请看下面代码:

    """
    !/usr/bin/env python
    -*- coding: utf-8 -*-
    @Time    : 2021/1/23 10:20
    @Author  : xibo.zhu
    @Site    : 
    @File    : 获取父类名称、所有父类名称.py
    @Software: PyCharm
    """
    
    class Grandpa(object):
        pass
    
    class Father01(Grandpa):
        pass
    
    class Father02(Grandpa):
        pass
    class Myself(Father01,Father02):
        def get_father_class(self):
            '''
            获取当前类名称,获取当前类的所有父类名称
            :return:
            '''
            # 获取当前类名称
            myself_calss_name = self.__class__.__name__
            print(f'本类名称是:{myself_calss_name}')
            # 获取当前类父类名称
            father_class_objs = self.__class__.__bases__  # 返回一个迭代器
            father_class_name = [father_class_obj.__name__ for father_class_obj in father_class_objs]
            print(f'当前类的所有父类名称:{father_class_name}')
    
        def get_ancestor_names(self):
            '''
            获取基础的父类,父类的父类 ... 意思就是获取所有祖先
            :return:
            '''
            # 获取所有祖先类 ,返回一个迭代器
            ancestor_objs = self.__class__.mro()
            ancestor_names = [one_ancestor_obj.__name__ for one_ancestor_obj in ancestor_objs]
            print(f'当前类的所有祖先类是:{ancestor_names}')
    
    if __name__ == '__main__':
        obj = Myself()
        obj.get_father_class()
        print("======================")
        obj.get_ancestor_names()

  • 相关阅读:
    H5基础浏览器兼容性
    100道iOS面试题
    iOS-SDWebImage使用(转)
    一个区分度很大的iOS面试题
    iOS技术面试08:其他
    iOS技术面试07:第三方框架
    iOS技术面试06:应用程序
    iOS技术面试05:UI控件
    iOS技术面试04:数据存储
    iOS技术面试03:Foundation
  • 原文地址:https://www.cnblogs.com/zhuxibo/p/14318053.html
Copyright © 2011-2022 走看看