Differences between revisions 2 and 6 (spanning 4 versions)
Revision 2 as of 2007-03-08 02:30:02
Size: 2365
Editor: ZoomQuiet
Comment:
Revision 6 as of 2009-11-28 12:04:05
Size: 1425
Editor: Elias
Comment: 删除对PageComment2组件的引用
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的时候搞懂的。现在给你补齐,应该能看懂了。
}}}
Line 37: Line 32:
[[PageComment2]]

[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. 理解

细,推荐阅读。

  • Nick Cen <[email protected]> ;Mar 7, 2007 8:02 PM

    我同意yi huang说的type是内置类型的概念。
    在OO里面不管你类怎么定义,类的所有属性最终都是指向一些系统的内置类型。这些类型的名字就叫做type。
    
    我觉得这跟数学里面数的定义一样。1是最基本的,其他的数字都可以通过对1进行加法来定义,而1本身则无法通过加法这个法则来定义。
    
    面向对象也是这样,所有的对象,都可以通过组合其他对象和一些内置属性进行定义。而这些内置属性则是无法通过语言本身提供的面向对象机制定义的。

1.2.1. 理Vs解

Include(/shhgs)

Include(/yihuang)

2. 反馈

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