众所周知,python是一门面向对象的编程语言,python中一切皆对象,那么我们先探讨一下什么是对象。

一.对象

在生活中一个事物就是一个对象,比如:一只猫就是一个对象,猫的体型、猫毛的颜色等是它的特性,而猫会叫、会跑、吃东西,这是它的的行为。在python中的定义的具有属性(特性)和方法(行为)的称之为对象,但是要理解python中一切皆对象,还得知道对象对应的类型,先看下类的定义:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。再来看python中一切皆对象,python中最常见的就是数字、字符串、函数、类,那他们是不是对象,按照对对象的定义,不好判断他们是不是对象,但是我们可以通过类型来判断:

数字1的类型是int,它是int类的一个实例对象,同理字符串、函数都是他们所属类的一个实例对象,所以他们是对象,还剩下一个就是类,可以肯定的是类也是一个对象,python中的所有类都是type类型,它们都是type类型的实例对象:

我们自定义一个class A,它属于type类型,object是所有类的父类,而它也是type类型,type的类型就是它本身,其中的object将在后面的内容中描述,我们接下来来看type。

二.元类

python中type是一个内置的元类,而元类是什么,元类用于实现python中的类对象,它们是类型的类型,所有的元类都必须实现相同的类级接口,所以要创建一个元类,需要继承内置的元类type。元类的作用是生成类,当我们在自定义一个类可以通过元类实现:

这与我们平时创建一个类,使用class生成的类对象是一样的,其实是再使用class关键字创建一个类,python的解释器会识别class关键字,使用type(classname,bases,dict)的方式去实现一个新类,来看下其中的参数:

--classname:新类的名称;

--bases:新类要继承的类,是一个元组,一般是object;

--dict:新类的属性和方法,是一个字典。

接下来看元类的创建,元类的创建需要继承type这个元类:

通过继承type创建了一个元类upper,再通过这个元类来创建一个类:    

A类继承了object,它的元类是upper,可以通过type()来查看:

最新文章

  1. 用FSM一键制作逐帧动画雪碧图 Vue2 + webpack
  2. 10年微软MVP路(如何成为一个MVP?)
  3. C++多线程の8*2重多线程创建方式
  4. DOM的概念及子节点类型
  5. 阿里 classloader
  6. <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_acce
  7. SQL Server 2008 R2【SET ANSI_PADDING填充属性】插入一条数据后,为何每一列都默认的在字符后多了几个空格
  8. Windows安装配置php+memcached的方法
  9. HTTP - 持久连接
  10. Android 自学之表格布局 TableLayout
  11. python 中调用windows系统api操作剪贴版
  12. validator 对象
  13. information_schema.events 学习
  14. wiki oi 1044 拦截导弹
  15. HDU 2444 The Accomodation of Students(二分图判定+最大匹配)
  16. liunx下常见的命令汇总
  17. Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
  18. MyBatis源码解析(三)——Transaction事务模块
  19. 快速了解Hash算法
  20. puppeteer:官方出品的chrome浏览器自动化测试工具

热门文章

  1. oracle中对字符串进行分割,并反回随机段
  2. C#线程调用带参数的方法,给控件赋值
  3. 【原创】Apache和Tomcat实现动静分离
  4. 忘记了本地mysql密码应该怎么找回
  5. SAI 绘画一个卡通动漫人物详解
  6. 如何让iframe背景色透明框架页文件设置
  7. 注解@SuppressWarnings
  8. 洛谷 P2665 [USACO08FEB]连线游戏Game of Lines
  9. IOS中UIImagePickerController中文界面问题
  10. 在KVM中执行windows 10虚机(by quqi99)