|
Size: 2365
Comment:
|
Size: 1443
Comment:
|
| Deletions are marked like this. | Additions are marked like this. |
| Line 17: | Line 17: |
| * `shhgs <[email protected]>;Mar 7, 2007 2:07 PM`{{{class和type的区别 | * `Leira Hua <[email protected]>;Mar 7, 2007 5:15 PM` * 关于type和class的差别,"'[http://www.cafepy.com/article/python_types_and_objects Python Types and Objects]'"这篇文章讲得非常详 细,推荐阅读。 * `Nick Cen <[email protected]> ;Mar 7, 2007 8:02 PM`{{{ 我同意yi huang说的type是内置类型的概念。 在OO里面不管你类怎么定义,类的所有属性最终都是指向一些系统的内置类型。这些类型的名字就叫做type。 |
| Line 19: | Line 24: |
| 打一个比方。在学OO的时候,老师会说,class就是一个模子,往里面浇铁水之后,就有了对象了。 | 我觉得这跟数学里面数的定义一样。1是最基本的,其他的数字都可以通过对1进行加法来定义,而1本身则无法通过加法这个法则来定义。 |
| Line 21: | Line 26: |
| OK,这里就有问题了。你写的代码,相当于工程师设计的图纸,而图纸是没有办法往里面浇铁水的,你得把图纸变成模子,才能往里面浇东西。 | 面向对象也是这样,所有的对象,都可以通过组合其他对象和一些内置属性进行定义。而这些内置属性则是无法通过语言本身提供的面向对象机制定义的。 }}} === 理Vs解 === ||<^> [[Include(/shhgs)]] ||<^> [[Include(/yihuang)]] || |
| Line 23: | Line 31: |
| 于是,你写的代码,定义了一个算法。这个算法别称为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
1. 讨论
持续中....
1.1. 问题
Class 和 Type 在Py 中有什么区别?
1.2. 理解
Leira Hua <[email protected]>;Mar 7, 2007 5:15 PM
关于type和class的差别,"'[http://www.cafepy.com/article/python_types_and_objects Python Types and Objects]'"这篇文章讲得非常详
细,推荐阅读。
Nick Cen <[email protected]> ;Mar 7, 2007 8:02 PM
我同意yi huang说的type是内置类型的概念。 在OO里面不管你类怎么定义,类的所有属性最终都是指向一些系统的内置类型。这些类型的名字就叫做type。 我觉得这跟数学里面数的定义一样。1是最基本的,其他的数字都可以通过对1进行加法来定义,而1本身则无法通过加法这个法则来定义。 面向对象也是这样,所有的对象,都可以通过组合其他对象和一些内置属性进行定义。而这些内置属性则是无法通过语言本身提供的面向对象机制定义的。
1.2.1. 理Vs解
