'''
元类被称为 Python 中的“深奥的巫术”。尽管你需要用到它的地方极少(除非你基于 zope 编程),可事实上它的基础理论其实令人惊讶地易懂。

一切皆对象
一切都有类型
 “class”和“type”之间本质上并无不同
类也是对象
它们的类型是 type
以前,术语 type 用于内置类型,而术语 class 用于用户定义的类,但自 Pythoon 2.2 以来“class”和“type”本质上并无不同。

对于旧风格(old-style)类的类型是 types.ClassType

类的类是……

它的元类……

就像对象是类的实例一样,类是它的元类的实例。

调用元类可以创建类。

确切来说,Python 中的其它对象也是如此。

因此当你创建一个类时……

解释器会调用元类来生成它……

定义一个继承自 object 的普通类意味着调用 type 来创建它:
'''


a = 10  # a是整型对象
print(type(a))  # <class 'int'>class Person:passp = Person()
print(type(p))#
print(type(int))  # <class 'type'>
print(type(Person))#
# class Student:
#     '''
#      这个是一个学生类
#     '''
#     type1 = '学生'
#
#     def __init__(self, name):
#         self.name = name
#
#
# s = Student('tom')
# print(Student.__dict__)Student = type('Student', (object,), {'type1': '学生类'})
print(type(Student))
s = Student()
print(s)print(type(object))class ListMetaclass(type):def __new__(cls, name, bases, attrs):print(name)print(bases)print(attrs)attrs['b'] = 'world'if attrs.get('test'):attrs.pop('test')return type.__new__(cls, name, bases, attrs)class MyList(object, metaclass=ListMetaclass):a = 'hello'def test(self):print('---->test')l = MyList()
print(l)
print(l.a)
# print(l.b)
l.test()'''type()  ----> 用来构建所有类型的类用法:1.type(对象)   ----》 返回的是对象的类型2.type(name,bases,attrs)  ----> name 类名   bases: tuple保存的是所有的父类  attrs:{} 字典   类中的所有的属性   所有的类底层都是经过type构建出来的。自定义元类:class xxx(type):def __new__(cls,name,bases,attrs):do something....return type.__new__(cls,name,bases,attrs)class Student(父类,metaclass=xxx):pass元类它只做了三件事:拦截类的创建修改类返回修改之后的类'''

元类被称为 Python 中的“深奥的巫术“相关推荐

  1. python中的元类_理解python中的元类

    一,理解类也是对象 在python中类同样也是一种对象,只要使用关键字class,Python解释器在执行的时候就会创建一个对象,这个对象(类)自身拥有创建对象(类实例)的能力,这就是为什么他是一个类 ...

  2. python元类的概念_Python中的元类编程 | 学步园

    过去有这样的概念,一直没有深究它的意义.今天同事问到,刚好也好好了解下. #===============================================Python中的元类编程=== ...

  3. python元类的使用_python中元类用法实例

    本文实例讲述了python中元类用法,分享给大家供大家参考.具体方法分析如下: 1.元类(metaclass)是用来创建类的类 2.type(object):返回一个对象的类型,与object.__c ...

  4. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  5. 面向对象和面向过程,python中的类class,python中程序的入口——main方法,

    1.程序入口,让main显现出来: print(__name__)#__name___是模块中的隐藏字段,当前模块运行的函数名 if __name__ == __main__ __main__() # ...

  6. python金融数据怎么获取_class类怎样在python中获取金融数据?

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就cla ...

  7. python清除实例化类_在Python中,如何尝试(和排除)类的实例化?

    在Python中,try/except如何实例化一个类?在 例如,我现在正在处理一个GitHub脚本:from github3 import login user = login(username, ...

  8. python oop 继承_关于oop:使类数据在python中可继承的正确方法是什么?

    我是Python的新手,来自Perl领域. 我正在尝试确定关于类数据的存储和访问的最佳实践,以便它可以被子类继承并可能进行扩展.阅读Python 2.7文档(我确实使用2.6),深入研究Python和 ...

  9. python 构建类_使用Python中的类构建餐厅菜单

    python 构建类 Here, we try to use class in python to build a Menu for the restaurant. The Menu will con ...

最新文章

  1. mysql 分库分表 建表_【分库分表】sharding-jdbc实践—分库分表入门
  2. openpyxl库,1秒合并多张表格并设置图表格式
  3. mybatis三种(查询,参数传递)
  4. 密码锁 java接口_从synchronized和lock区别入手聊聊java锁机制
  5. LeetCode 2136. 全部开花的最早一天(贪心)
  6. 大数据应用案例---用户画像与精准营销
  7. 浅谈Android事件分发
  8. [Android]bp侧gerrit提交不上去时,删除编译生成的二进制文件
  9. Parsing R-CNN(CVPR2019)-人体实例分析论文解读
  10. 大数据的兴起,数据科学家的崛起
  11. 百度编辑器ueditor-在线图片管理,想修改下默认的排序管理
  12. 使用 easyExcel 生成多个 excel 并打包成zip压缩包
  13. Markdown转Word文档在线工具
  14. python用matplotlib画五角星_绘图:Matplotlib
  15. 20162316刘诚昊 17年10月9日测验“排序课堂测试”
  16. HTML 表格跨行与跨列
  17. Kotlin - Map 字典
  18. 2019阿里校招测评题 光明小学完全图最短路径问题
  19. 爬虫爬虫 day2 爬取校网文章
  20. 有人做脑电的情绪分类吗

热门文章

  1. 程序员的成长从开窍开始系列 一、如何摆脱低级错误的困扰
  2. Vue 生命周期中 mounted( ) 和 created( ) 的区别
  3. Apache2.4配置ssl
  4. leetcood学习笔记-204-计算质数
  5. P3193 [HNOI2008]GT考试
  6. 分布式锁 基于Redis
  7. vba基本操作 -- 常用功能
  8. 数据结构 练习21-trie的原理分析和应用
  9. 基于报文地址的策略路由配置示例
  10. 挂“洋头”卖奶粉,澳优还要欺骗好久