以python中类方法为例来说说自定义模块导入的三种方法

来源:互联网 发布:中国产业生产率数据库 编辑:程序博客网 时间:2024/05/22 02:18

为方便理解直接给代码:

class Circle1:      def __init__(self, radius):         self.__radius = radius      def setRadius(self,newValue):         if newValue >= 0:             self.__radius = newValue         else: raise ValueError("Value must be positive")      def area(self):         return 3.14159 * (self.__radius ** 2)class Circle2:      def __init__(self, radius):         self.__radius = radius      def __setRadius(self, newValue):         if newValue >= 0:             self.__radius = newValue         else: raise ValueError("Value must be positive")      radius = property(None, __setRadius)      @property      def area(self):         return 3.14159 * (self.__radius ** 2)

显然以上代码实现的功能只是简单的求面积。定义两个类分别为Circle1、Ciecle2,两个类中的定义的函数几乎一致,只是在Circle2中为radius函数设置了属性,使用了proprety函数来实现。廖雪峰网站上有详细的介绍,在这里简单的说两句。proprety方法使我们的读写函数(在本代码中是读函数setRadius)能更容易的调用,修改,接下来会演示给大家看,来具体理解proprety方法的功能。
但是首先我们要把代码文件保存起来,我以class2.py命名(因为之前我练习类方法已经有一个class1)。保存起来后,我们要用文件里的函数必须调用这个文件,相当于一个python库里的模块,只不过是我们自定义的。据我所知很多公司里的工程师或者码农,在离职或者跳槽时都会带走自己的库,这是最珍贵的财富,以后简单调用就好(公司是严禁带出这些所谓的机密文档的)。那怎么才能像调用python库模块一样调用自己的代码呢。
最简单就是把自己的代码放进python库搜索路径中,但不建议,自己的模块最好分开放,以便以后打包和修改。可以执行一下代码来查寻python的搜索路径:

    import sys ,pprint      pprint.pprint(sys.path) 

由于我这是练习的代码文件,所以选择临时加入新的搜索路径:

    import sys      sys.path.append('./././')  #引号中是自己文件的路径

如果是永久性的把自己的文件作为模块来调用,简单配置python的环境变量即可:

    sudo vim ~/.profile  #修改profile,也可以用gedit编辑器不用vim    export PYTHONPATH=$PYTHONPATH:./././ #在profiles文件最后一行加上这句代码

需要注意的是路径中不能用中文名称,另外这个修改只针对当前的用户并且不会立即生效,可以运行以下代码使得立马生效,但下一次在终端打开时依旧会失效,需要重新运行,那怎么使得它长久有效呢:

    source /etc/profile #立马生效 
    sudo vim /etc/bash.bashrc #编辑启动日志    export PYTHONPATH=$PYTHONPATH:./././#在bashrc文件中最后一行写入本代码

我查资料发现还有一个比较简单的方法(强烈推荐),导入模块:
如果是python3的话,寻找文件夹: \Lib\site-packages\
如果是python2的话,寻找文件夹: \Lib\dist-packages\
一般情况下,都是在/usr/bin/lib/下面。在以上文件夹内,新建一个.pth文件:
进入当前目录 touch filename.pth
然后打开文件 sudo gedit filename.pth
在里面写进自己的一个文件路径,这个文件里的所有代码文件都可以作为模块去调用了。
欢迎大家点赞分享,这是我的动力谢谢。