1. 概述 Python元编程有两种方法,一是采用类似“装饰器”的工具对基本元素(例如函数、类、类型)内审和对其进行实时创建和修改,二是运用类型"元类"的方式对类实例的创建过程进行修改,甚至于允许重新设计Python面对对象编程范式的实现。 2. 装饰器 关于装饰器的内容可以阅读上篇博客<<Pyth ...
分类:
编程语言 时间:
2018-02-11 14:51:20
阅读次数:
198
友元 类可以允许其他类或函数访问它的非共有成员,办法是令其他类或函数成为它的友元。如果类想把一个函数作为它的友元,只需要添加一条以friend关键字开始的函数声明语句即可。 友元声明只能出现在类定义的内部,但是在类内出现的具体位置不限,友元不是类的成员也不受它所在区域访问控制级别的约束。 一般来说最 ...
分类:
编程语言 时间:
2018-01-28 14:40:29
阅读次数:
158
Django 知识补漏单例模式 单例模式:(说白了就是)创建一个类的实例。在 Python 中,我们可以用多种方法来实现单例模式: 1、文件导入的形式(常用) 2、基于类实现的单例模式 3、基于__new__实现的单例模式(最常用 推荐使用,方便) 4、基于metaclass(元类)实现的单例模式 ...
分类:
其他好文 时间:
2018-01-25 23:05:16
阅读次数:
1242
友元函数可以修改类的私有属性,写在类的public/private/protected底下都可以。友元函数的函数体写在类的外面时,写法和普通函数一样,不需要加friend关键字,但函数入口参数里面一般肯定是要带一个类的指针或者类的引用以便使用类的私有属性。 友元类的作用和友元函数相同。当一个类A被声 ...
分类:
编程语言 时间:
2018-01-25 00:25:34
阅读次数:
265
文章转自:http://www.cnblogs.com/linhaifeng/articles/8029564.html 一 知识储备 #可以把exec命令的执行当成是一个函数的执行,会将执行期间产生的名字存放于局部名称空间中 g={ 'x':1, 'y':2 } l={} exec(''' glo ...
分类:
编程语言 时间:
2018-01-24 22:03:57
阅读次数:
124
在最开始要弄明白一点,类都是由元类创建的。在定义类 class Foo:pass的时候(类也是对象),就会执行type类或者type派生类的__init__方法,当Foo()时:执行type类或者type派生类的__call__方法,在__call__方法中调用了Foo类的__new__方法创建了一 ...
分类:
编程语言 时间:
2018-01-22 21:21:03
阅读次数:
204
阅读目录 一 知识储备 二 引子(类也是对象) 三 什么是元类? 四 创建类的两种方式 五 自定义元类控制类的行为 六 练习题 一 知识储备 exec:三个参数 参数一:字符串形式的命令 参数二:全局作用域(字典形式),如果不指定,默认为globals() 参数三:局部作用域(字典形式),如果不指定 ...
分类:
Web程序 时间:
2018-01-17 23:28:39
阅读次数:
326
本篇导航: flask实例化参数 信号 metaclass元类解析 一、flask实例化参数 instance_path和instance_relative_config是配合来用的;这两个参数是用来找配置文件的,当用app.config.from_pyfile('settings.py')这种方式 ...
分类:
其他好文 时间:
2018-01-17 01:00:56
阅读次数:
174
一、创建类的流程 二、什么是元类 在Python3中继承type的就是元类 示例 class ASD(type): pass qqq = ASD("qwe", (object,), {}) #用ASD这个元类创建了一个(qwe,并且继承object类的)类 # class ASD(qwe): # p ...
分类:
Web程序 时间:
2018-01-17 00:48:22
阅读次数:
157
"""metaclass作用: 1) 拦截类的创建 2) 修改类 3) 返回修改之后的类 """ """为什么要用metaclass类而不是函数? 由于__metaclass__可以接受任何可调用的对象,那为何还要使用类呢,因为很显然使用类会更加复杂啊?这里有好几个原因: 1) 意图会更加清晰。当你 ...
分类:
Web程序 时间:
2018-01-11 17:28:30
阅读次数:
175