如果你有坚定的信念你就不会迷茫。

Python包、模块、类

上一篇 / 下一篇  2010-10-12 10:41:54 / 个人分类:Python

Python中引用是非常简单的事情,这里需要清楚三个概念就可以了包、模块、类。类这个就不用说了。模块对应的是一个.py文件,那么module_name就是这个文件去掉.py之后的文件名,py文件中可以直接定义一些变量、函数、类。那么包我们可以看作一个包含__init__.py和一系列.py文件的文件夹,这样做的目的是为了区别包和普通字符串。

importmodule_name

frompackage_nameimportmodule_name

frompackage_nameimport *

那么如何import时,python解释器如何才能找到该模块放置的文件位置呢?python寻找模块的优先级如下:

1、  当前文件目录

2、  环境变量PYTHONPATH

3、  sys.path(list类型)

sys.pathlist类型,我们可以通过insert(), append()方法来增加模块导入的搜索路径,如:

import sys

 

path = “……” #需要增加的路径

sys.path.insert(0, path)

在import模块时,该模块的顶层代码将会被执行一次。如果该模块被import多次,例如import A, import B.其中B模块本身也有import A,那么只在第一次被import的时候顶层代码会被执行。

 

这个Blog写的比较易懂:http://hi.baidu.com/peaksst/blog/item/a887f3ddb565683c5982ddaa.html

还有这个Blog写得也比较透彻:http://hi.baidu.com/klcstudy/blog/item/eef58113462cc6816438db5c.html

包括了:

1、  实例化对象:instance = CLASSNAME()

2、  在类实例化时生成初始化对象的函数__init__()

3、  继承:class子类名称(基类名称)

4、  多继承:class子类名称(基类1,基类2,…),决定子类属性/函数引用时采用的是深度优先、从左到右的方式:基类1-〉基类1的基类—>….->基类2->基类2的基类-

 

sys.modules可以用来找到模块被导入的路径,这样如果有相同的模块名可以通过sys.modules知道当前使用的是哪个路径下的。sys.path是List类型, sys.modules是Dictionary类型。

在python有一个叫做实例属性的概念,实例属性顾名思义就是只属于实例而不属于类的属性,在运行时如果临时需要一些变量的时候我们可以定义新的实例属性:

  1. class ABC(object):  
  2.     foo = 'ABC'  
  3.     def show(self):  
  4.         print 'foo from imptee:', foo  
  5. if __name__ == "__main__":  
  6.     a = imptee.ABC()  
  7.     print a.foo  
  8.     a.instanceVar = 'instance variant'  
  9.     print a.instanceVar  

self:

1、在定义类的函数时,如果需要该函数让实例化的对象可以使用,则函数定义中必须存在参数self.

下列代码如果def函数时没有定义self参数,则在调用是会报错:TypeError: show1() takes no arguments (1 given)

2、在类中的函数如果要使用类中的变量一定要用self.var. 下列代码中Class ABC的函数show1使用的是foo是当前模块的foo, 如果要使用Class ABC中定义的foo,则必须要self.foo.

下列代码的输出为:

variant from module
variant from class ABC


  1. foo = 'variant from module'  
  2. class ABC():  
  3.     foo = 'variant from class ABC'  
  4.     def show1(self):  
  5.         print  foo  
  6.     def show2(self):  
  7.         print  self.foo  
  8.           
  9. if __name__=="__main__":  
  10.     a = ABC()  
  11.     a.show1()  
  12.     a.show2() 

TAG: aa Python python

 

评分:0

我来说两句

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 20133
  • 日志数: 19
  • 建立时间: 2010-09-08
  • 更新时间: 2011-01-21

RSS订阅

Open Toolbar