菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
385
0

Python self.__class__.__name__、self.__class__.__bases__ 、self.__class__.mro() 获取当前类名称、父类、以及所有祖先类

原创
05/13 14:22
阅读数 89484

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

"""
!/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()

 

发表评论

0/200
385 点赞
0 评论
收藏
为你推荐 换一批