'''
# str、 type 和 LineItem 是object 的子类 str、 object 和 LineItem 是 type 的实例,因为它们都是类
object 类和 type 类之间的关系很独特: object 是 type 的实例,而 type
是 object 的子类。这种关系很“神奇”,无法使用 Python 代码表述,因为定义其中一
个之前另一个必须存在。 type 是自身的实例这一点也很神奇
>>> 'spam'.__class__
<class 'str'>
>>> str.__class__
<class 'type'>
>>> from bulkfood_v6 import LineItem
>>> LineItem.__class__
<class 'type'>
>>> type.__class__
<class 'type'>
''' '''
ABCMeta 最终所属的类也是 type。所有类都直接或间接地是 type 的实例,
不过只有元类同时也是 type 的子类。若想理解元类,一定要知道这种关系:元类(如
ABCMeta)从 type 类继承了构建类的能力
>>> import collections
>>> collections.Iterable.__class__
<class 'abc.ABCMeta'>
>>> import abc
>>> abc.ABCMeta.__class__
<class 'type'>
>>> abc.ABCMeta.__mro__
(<class 'abc.ABCMeta'>, <class 'type'>, <class 'object'>)
Iterable 是 object 的子类,是 ABCMeta 的实例。 object 和 ABCMeta 都是
type 的实例,但是这里的重要关系是, ABCMeta 还是 type 的子类,因为 ABCMeta 是
元类。示意图中只有 Iterable 是抽象类
我们要抓住的重点是,所有类都是 type 的实例,但是元类还是 type 的子类,因此可以
作为制造类的工厂。具体来说,元类可以通过实现 __init__ 方法定制实例。元类的
__init__ 方法可以做到类装饰器能做的任何事情,但是作用更大,如接下来的练习所
示。
''' #构建顺序:元类__prepare__() -> __new__() -> __init__()

最新文章

  1. 微信小程序产品定位及功能介绍
  2. windows下hla编译环境配置(转)_1
  3. Android SDK Manager国内更新代理
  4. (转)搞ACM的你伤不起
  5. Flex 布局教程:语法篇(转)
  6. 使用git ftp发布我个人的hexo博客内容
  7. Deploy Oracle 10.2.0.5 on Red Hat Enterprise Linux 6.4
  8. 实验吧_貌似有点难(php代码审计)&amp;头有点大
  9. c/c++ 求一个整数转换为二进制数时中‘1’的个数
  10. dskinlite(uieasy mfc界面库)使用记录1: schema验证xml
  11. HashMap实现原理简析及实现的demo(一看就明白)
  12. Ubuntu12.04下解决sudo apt-get update警告Duplicate sources.list entry
  13. POJ.2750.Potted Flower(线段树 最大环状子段和)
  14. 九、将cs文件快速的转换成可执行文件和响应文件(配置编译开关的文件)
  15. PAT A1007 Maximum Subsequence Sum (25 分)——最大子列和,动态规划
  16. 分布式Redis缓存串讲(一)
  17. scrapy爬取天气数据
  18. 使用CDN的网络访问过程
  19. 【转】四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps
  20. nginx 服务器重启命令,关闭(转)

热门文章

  1. AngularJS2.0起步
  2. CNN实现垃圾邮件分类(行大小不一致要补全)
  3. Makefile小结
  4. Linux其他:环境变量配置
  5. python写一个密码生成器的类,要求有个类变量,统计一下一共生成过多少个密码。 要求有4个方法,1:构造方法 2 实例方法 3 类方法 4 静态方法
  6. 2018-2019-2 20165209 《网络对抗技术》 Kali安装
  7. SpringMVC中controller返回图片(转)
  8. 怎么说, 开发会很乐意去主动修改bug?
  9. 20145310 Exp7 网络欺诈技术防范
  10. 20145327 《网络对抗》逆向及BOF基础实践