准备 在Python中,一切皆对象。 既然一切皆对象,那么类也是对象,我们暂且称之为 类对象。来个简单例子(本篇文章的所有案例都是运行在Python3.4中): 如果想深入了解一下,可以看:深刻理解Python中的元类(metaclass) 引入 最近在阅读tornado源码,发现在其源码中有很多类 ...
分类:
编程语言 时间:
2017-02-04 20:05:24
阅读次数:
3778
推荐+收藏:深刻理解Python中的元类(metaclass) 做一些笔记学习学习: 在大多数编程语言中,类就是用来描述如何生成一个对象的代码段,在Python中类也是一个对象,这个(类)对象自身拥有创建对象(类实例)的能力。 因为它的本质是一个对象: 可以将它赋值给一个变量 可以拷贝它 增加属性 ...
分类:
编程语言 时间:
2017-02-04 18:36:31
阅读次数:
175
__new__ 的作用 依照Python官方文档的说法,__new__方法主要是当你继承一些不可变的class时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。还有就是实现自定义的metaclass。 首先我们来看一下第一个功能,具体我们可以用int来作为一个例 ...
分类:
编程语言 时间:
2017-01-31 12:11:58
阅读次数:
439
当创建实例时,需要调用User类,首先会检查有没有__metaclass__属性,找到了,通过metalclass创建类(基于User类,传入的name为User,父类为Model,属性为User类的属性)。之后在实例化过程中,需要调用创建的新的User类中的方法,如果没有,需要到父类(metalc ...
分类:
其他好文 时间:
2017-01-14 09:25:37
阅读次数:
217
>>> class CObj(object):... pass...>>> dir()['CObj', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']>>> cob = CObj>>> d ...
分类:
编程语言 时间:
2017-01-04 07:41:26
阅读次数:
208
因为Python没有提供抽象类,需要使用抽象类需要使用abc模块abc用法很简单主要是3个:ABCMeta,abstactporperty,abstractmethodfromabcimportABCMeat,abstractporperty,abstractmethod
classB():
__metaclass__=ABCMeta
@abstractporperty
defmap_data(self):
pass
@abstractmethod..
分类:
编程语言 时间:
2016-12-30 22:20:32
阅读次数:
450
import abc class All_file(metaclass=abc.ABCMeta): @abc.abstractmethod def read(self): pass @abc.abstractmethod def write(self): pass class Disk(All_fi... ...
分类:
其他好文 时间:
2016-12-22 10:55:55
阅读次数:
166
抽象类: py2:导入abc函数,_metaclass__ = abc.ABCMeta;在强制调用类下:@abc.abstractmethod py3:再强制调用类下添加raise NotImplementedError静态方法 @staticmethod 避免实例化开辟大量内存空间 既不能访问公有 ...
分类:
编程语言 时间:
2016-12-08 18:31:25
阅读次数:
174
文中有些地方是用2.7开发的,如果您安装的是3.x,有几点需要注意: print "xxx" 要换成 print("xxx") __metaclass__ = type 删除掉。 类型和表达式部分 你好,世界! 乘方 变量 注:这里的var = xxxx不叫变量赋值,而叫变量绑定,python维护了 ...
分类:
编程语言 时间:
2016-11-13 19:17:15
阅读次数:
261
type 其实就是元类,type 是python 背后创建所有对象的元类 python 中的类的创建规则: 假设创建Foo 这个类 class Foo(Bar): def __init__(): pass Foo中有__metaclass__这个属性吗?如果有,Python会在内存中通过__meta ...
分类:
编程语言 时间:
2016-11-04 23:51:09
阅读次数:
207