Differences between revisions 1 and 2
Revision 1 as of 2007-03-08 02:28:26
Size: 426
Editor: ZoomQuiet
Comment:
Revision 2 as of 2007-03-08 02:30:02
Size: 2365
Editor: ZoomQuiet
Comment:
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
'''Class''' 和 '''Type''' 在Py 中有什么区别?
Line 16: Line 17:
 * `shhgs <[email protected]>;Mar 7, 2007 2:07 PM`{{{class和type的区别
Line 17: Line 19:
打一个比方。在学OO的时候,老师会说,class就是一个模子,往里面浇铁水之后,就有了对象了。

OK,这里就有问题了。你写的代码,相当于工程师设计的图纸,而图纸是没有办法往里面浇铁水的,你得把图纸变成模子,才能往里面浇东西。

于是,你写的代码,定义了一个算法。这个算法别称为class。

你的class,交给type,type根据你的class,加工出一个模子,然后你就可以往里面浇铁水生成instance了。这个type就类似于工厂的生产能力,工艺流程,或者。。。在编程的时候,这个type是语言的一种机制,能把你用代码定义的算法,也就是class,解释成能生成object,或者说instance(其实这个术语更好)的一种object(在解释meta
programming的时候,一定要区分instance和object。这也是为什么,我曾经宣称,OOP应该是面向客体的编程。)。

OK,Py的type有很多,你import
types然后dir(types)可以看到很多。具体而言,每种type都是一种组织内存的方式。比如说,Python内部表示类的对象,同表示instance的对象,其内部构造是不同的。那么这个内部构造是怎么定义的呢?就是这个type定义的。比如,每个instance都应该有一个dict,有表示其parent的tuple,此外还有初始化的时候,生成的parent类的对象(这部分具体应该问Robert
Chen,我菜了)。而class里面可能就没有这么些东西。反正这就是type定义的。

接下来的东西,你可以去看Py in a
nutshell了。Alex把福尔摩斯推理的最重要的一页给撕了。我也是琢磨了半天,最后在看Programming
Ruby的时候搞懂的。现在给你补齐,应该能看懂了。
}}}

[http://groups.google.com/group/python-cn/browse_thread/thread/e18f109622b2ef76 哪位大哥知道type 与class 的区别?] -- 引发的深入理解 ::-- ZoomQuiet [DateTime(2007-03-08T02:28:26Z)] TableOfContents

Include(CPUGnav)

1. 讨论

持续中....

1.1. 问题

ClassType 在Py 中有什么区别?

1.2. 理解

PyClassAndType (last edited 2009-12-25 07:16:35 by localhost)