metaclass

Groovy探索之MOP 三 Class、MetaClass和ExpandoMetaClass

12-18
Class当然是Groovy语言从Java语言继承来的,这就是说Groovy语言也继承了Java语言的反射机制.这意味着我们能够像在Java语言里使用反射那样,在Groovy语言里写出诸如下面的代码: import java.lang.reflect.Method class Testor { def testDelegate() { 'ok' } static void main(args) { def t = new Testor() Class cls = t.class Method m

Groovy探索之MOP 十五 方法名的动态性

12-18
到目前为止,我们的<Groovy探索之MOP>系列已经谈到了使用ExpandoMetaClass的方方面面,但值得注意的是,我们通过ExpandoMetaClass给一个类在运行期内添加一个方法,不管是普通方法还是静态方法,我们都是添加一个确定方法名的方法.即我们添加一个方法名为A的方法,然后才能使用这个方法A. 然而,方法名的动态性,其实是我们早已接触过的事情,比如在<Groovy探索之invokeMethod方法>里,我们就可以创建形如"sortByXxxxx()&q

在Python中使用元类的教程

04-29
  这篇文章主要介绍了在Python中使用元类的教程,是Python当中的基础知识,代码基于Python2.x版本,需要的朋友可以参考下 type() 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的. 比方说我们要定义一个Hello的class,就写一个hello.py模块: ? 1 2 3 class Hello(object): def hello(self, name='world'): print('Hello, %s.' % name) 当Py

Python中的Classes和Metaclasses详解

04-02
 类和对象 类和函数一样都是Python中的对象.当一个类定义完成之后,Python将创建一个"类对象"并将其赋值给一个同名变量.类是type类型的对象(是不是有点拗口?). 类对象是可调用的(callable,实现了 __call__方法),并且调用它能够创建类的对象.你可以将类当做其他对象那么处理.例如,你能够给它们的属性赋值,你能够将它们赋值给一个变量,你可以在任何可调用对象能够用的地方使用它们,比如在一个map中.事实上当你在使用map(str, [1,2,3])的时候,是将一

iOS开发:Cocoa—类与对象详解

03-04
我们可以在/usr/include/objc/objc.h 和 runtime.h 中找到对 class 与 object 的定义: typedef struct objc_class *Class; typedef struct objc_object { Class isa; } *id; Class 是一个 objc_class 结构类型的指针:而 id(任意对象) 是一个 objc_object 结构类型的指针,其第一个成员是一个 objc_class 结构类型的指针.注意这里有一关键的

IOS开发:Cocoa的类与对象

02-19
  我们可以在/usr/include/objc/objc.h 和 runtime.h 中找到对 class 与 object 的定义: typedef struct objc_class *Class; typedef struct objc_object { Class isa; } *id; Class 是一个 objc_class 结构类型的指针;而 id(任意对象) 是一个 objc_object 结构类型的指针,其第一个成员是一个 objc_class 结构类型的指针.注意这里有一关

深入理解Python中的元类(metaclass)_python

02-14
译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6

《大话设计模式》笔记1

01-03
经典设计模式23,现在开始利用上班时间研究. 代码例子我就不写了,书上有,而且也很好懂.建 议去看书.只写自己的理解,以及在工作中体会到的. 1.简单工厂模式:主要针对类的实例化的而设计,通过同一的方法产生不同的类的实例. 2.策略模式:是用于算法有异的条件下,通过继承统一接口,来达到算法替换的目的,如:商场打折行 为下,不同的打折条件. 3.类的单一职责:主要指一个类不应该承担不属于自己的方法,同时一个方法也不应当承担不属于的 自己功能,主要是为了实现复用和维护方便.比如:Form类,一般只承