python中的模块,类,函数,对象,实例比较)

在学习JAVA的时候涉及到了类,对象,方法,域等基本概念。类像一个盒子一样包含各种域和访问更改这些域的方法,而对象是类的特例,比如老师和张老师的关系,老师是一个类,而张老师是一个对象。OOP的关键就是类和对象的使用。

 

在我学习Python的时候,对模块和类的概念与关系不以为意,在开始动手写脚本的时候不知不觉就昏了头,查阅了些许资料,现写一些小小总结。

 

为了方便叙述,引入zipfile这个模块的描述,代码比较长,但我们只关心其中大致包含了哪些内容:

 

 

可以看到,Help on zipfile module列出了zipfile的六个属性:NAME,DESCRIPTION,CLASSES,FUNCTIONS,DATA,FILE。

 

函数是可以重用的代码,而模块就是可以重用的函数与变量的集合。和JAVA的严谨不一样,你可以往模块中放许多东西,类,定义的函数,甚至独立的域。一个模块对应一个.py文件。每个python程序也是一个模块。JAVA的.java文件是把一个或者多个封装得很好的类放在同一个.java文件中。一个JAVA程序总是在类里找到main入口开始运行。由此看来,.py和.java文件在内容和作用上都有很大差别。从某种意义上来说,.py文件更加像C中的头文件(只是头文件不能运行)。

 

有意思的是,在python中,一切都是对象,包括函数,数据域,数值等等。所以,模块就是一个盛了很多对象的容器。这个容器被标好标码,你可以通过路径和名字找到它,查阅上面的标码从中拿到你想要的对象,访问、使用或者更改它们。

 

而类就是小的容器,也是模块的一部分。不同的是,一个类可以衍生出很多很多类。而模块被import之后就只有一个了。

 

python似乎并不像JAVA一样强调 类和对象的关系,反而强调 对象和对象的关系 以及 对象和实例的关系,这一点让习惯使用JAVA的人有些迷惑。对python而言,“其实都是实例化的”。python的类关系向一棵树,每个叶子之间有两种导航关系:1 子类继承父类;2 子类构建实例。这一点,从type和object的鸡、蛋关系里就能察觉出来。

 

具体可见《python中的类型关系和继承关系》以及《python类型和对象》:

 

http://developer.zdnet.com.cn/2008/0521/874673.shtml

 

http://wenku.baidu.com/link?url=qFUbnlpt_YuQwNdsiLpaDBs10CwX48MyCWwvOUIf3t66LLCDoZk9mnTX1hJm0viY2Q1rlWQb3i4TBdOJ7DnkVQyJKvGAH1Av2NjWUFph7Fm

posted @ 2018-12-08 18:16  挖坑达人  阅读(14)  评论(0编辑  收藏  举报