找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 2037|回复: 0

[求助] 求大神帮忙理解这个脚本,关于元类和继承

1

主题

1

帖子

1

积分

贫民

积分
1
陈佳伟天路航空 发表于 2019-5-23 14:15:49 | 显示全部楼层 |阅读模式
  1. #!/usr/bin/env python
  2. # encoding: utf-8

  3. from collecti** import OrderedDict                                                                                                                               
  4. import sys                                                                                                                                                                               

  5. _board_classes = {}                                                                                                                                                               

  6. class BoardMeta(type):                                                                                                                                                       
  7.     def __init__(cls, name, bases, dct):                                                                                                               
  8.         super(BoardMeta, cls).__init__(name, bases, dct)       

  9.         if 'abstract' not in cls.__dict__:
  10.             cls.abstract = False
  11.         if cls.abstract:
  12.             return

  13.         board_name = getattr(cls, 'name', name)
  14.         if board_name in _board_classes:
  15.             raise Exception('board named %s already exists' % board_name)
  16.         _board_classes[board_name] = cls

  17. class Board:
  18.     abstract = True                                                                                                                                                               

  19.     def __init__(self):                                                                                                                                                       
  20.         pass

  21. Board = BoardMeta('Board', Board.__bases__, dict(Board.__dict__))                                                               

  22. class sitl(Board):
  23.         pass

  24. class linux(Board):
  25.         pass
  26.        
  27. class pxfplus(linux):
  28.     pass
  29.        
  30. def list_boards():                                       
  31.     print(sorted(list(_board_classes.keys())))       

  32. list_boards()
复制代码


捕获.PNG
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表