1.补充内置函数

2.反射

什么是?

通过字符串操作类或者对象的属性

hasattri(a,"b")  判断能否访问到a.b

setattri(a,"b",c)设置a.b=c

3.自定义内置方法定制类的功能

对象被打印时自动触发__str__

__del__用在回收应用程序对象时候顺便把占的操作系统的资源也回收

4.元类

什么是?

py中一切皆对象,用class 关键字定义的类本身也是对象,负责产生该对象的类为元类

为何用?

元类负责产生类的,所以学习元类或者自定义元类的目的是控制类的产生过程,还可以控制对象的产生过程

如何用?

exec 的用法:

将字符串中的代码提取出来运行,运行字符串内的代码

创建类的三要素:

类名,基类,类的名称空间

class_name="people"

class_bases=(object,)  元组

class_dic={}

class_body='''   '''

exec(class_body,{},class_dic)

people=type(class_name,class_bases,class_dic)

创建类的两种方法:

1.用的class关键字创建,默认元类是type

如果类也是对象的话,该过程也是实例化

2.用自定义的元类

class Mymeta:

pass

class people(object,metaclass=Mymeta):

pass

分析自定义类的原理,非元类的原理

1.拿到字符串格式的类名 "people"

2.拿到类的基类们__bases__(object,)

3.执行类体代码,拿到名称空间 class_dic={}

4.调用people=type(class_bases,class_bases,class_dic)

class mymate(type)  只有继承了type才是元类,否则是个普通的自定义类

自定义元类控制类的产生过程,类的产生过程其实就是元类的调用过程,即类的实例化过程

class Foo()

pass

obj=Foo()

obj()

对象的类中定义__call__

要想调用obj,必须控制Foo(元类)中的call方法

把类也看成对象,也需要call方法

调用

自定义类的实例化过程

1.在mymeta里面先造people的空对象obj= self.__new__(self)    #括号里传self,就是people

__new__的顺序:查找从people找到mymeta再到type

2.初始化独有的属性 self.__init__(obj.*args,**kwargs)  调用people是调用call方法 3.return obj  #返回初始化好的对象

python基础之Day24的更多相关文章

  1. python基础——列表推导式

    python基础--列表推导式 1 列表推导式定义 列表推导式能非常简洁的构造一个新列表:只用一条简洁的表达式即可对得到的元素进行转换变形 2 列表推导式语法 基本格式如下: [expr for va ...

  2. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  3. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  4. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

  5. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

  6. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  7. 进击的Python【第二章】:Python基础(二)

    Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...

  8. Python之路【第一篇】python基础

    一.python开发 1.开发: 1)高级语言:python .Java .PHP. C#  Go ruby  c++  ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...

  9. python基础之day1

    Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...

随机推荐

  1. (Python基础)文件操作

    对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 命名为7 years Once I was seven years old my momma t ...

  2. 使用K-means进行聚类,用calinski_harabaz_score评价聚类效果

    代码如下: """ 下面的方法是用kmeans方法进行聚类,用calinski_harabaz_score方法评价聚类效果的好坏 大概是类间距除以类内距,因此这个值越大越 ...

  3. 团队作业-Week9-软件项目的风险

    一.软件项目中的风险 软件项目的风险无非体现在以下四个方面:需求.技术.成本和进度.IT项目开发中常见的风险有如下几类: (1)需求风险 ①需求已经成为项目基准,但需求还在继续变化: ②需求定义欠佳, ...

  4. C#解析json和xml数据

    C#解析json和xml数据 // 用到的包using Newtonsoft.Json; // using Newtonsoft.Json.Linq; const string value = &qu ...

  5. “帮你”APP——NABCD需求分析

    1.你的创意解决了用户的什么需求?(N) 本学校已存在的失物招领.表白墙.二手市场等QQ群普遍存在信息冗杂,时效性差等缺点.不能充分发挥信息有效性的,我们的“帮你”APP能够充分发挥信息的有效性,让失 ...

  6. R语言输出高质量图片

    Rstudio画图之后保存的 图片格式如下 上面的几种格式可以直接插入word文档中,但是图片质量很低,锯齿感很明显.若生成PDF,为矢量图(不懂),但是不可以插入word文档中. 最简便的方法就是对 ...

  7. zookeeper选举流程

    如何在zookeeper集群中选举出一个leader,zookeeper使用了三种算法,具体使用哪种算法,在配置文件中是可以配置的,对应的配置项是”electionAlg”,其中1对应的是Leader ...

  8. 2017-11-11 Sa Oct Spider

    2017-11-11 Sa Oct Spider 4:33 PM Again. Firstly test liburl: # -*- coding: utf-8 -*- import json imp ...

  9. 爬虫之进阶 基于twisted实现自制简易scrapy框架(便于对scrapy源码的理解)

    1.调度器 class Scheduler(object): """调度器""" def __init__(self, engine): & ...

  10. Game Engine Architecture 11

    [Game Engine Architecture 11] 1.three most-common techniques used in modern game engines. 1)Cel Anim ...