python 的头文件包含问题

一个python项目中一个文件需要引用另一个文件中的类,遇到的几个问题,总结如下:

0x01

情况一:在同一目录下

project

   |--a.py

   |--b.py

   |--main.py

在main.py中,需要引用a.py和b.py中的类:

from a imoport *

from b imoport *

0x02

情况二:主路径下调用子文件夹中的类

project

   |--a

       |---a.py

   |--b

       |---b.py

   |--main.py

在main.py中,需要引用a.py和b.py中的类,a,b为文件夹

from a.a imoport *

from b.b imoport *

直接这样引用会报错,解决方法是在a,b文件夹中增加__init__.py文件

project

   |--a

       |---__init__.py

       |---a.py

   |--b

       |---__init__.py

       |---b.py

   |--main.py

0x03

情况三:不同文件夹之间的调用

project

   |--a

       |---__init__.py

       |---a.py

   |--b

       |---__init__.py

       |---b.py

   |--main.py

b中调用a中的类,或者a中调用b中的类

在b.py中

import sys
sys.path.append('E:\\testnow\\project\\a')
import a

linux和window的路径格式不一样,该方法适用于所有跨文件夹调用情况,但要注意路径格式。

0x04

文件调用时出现的同一模块重复调用问题

project

   |--a

       |---__init__.py

       |---a.py

   |--b

       |---__init__.py

       |---b.py

   |--main.py

比如a.py中调用了

from time import * 

from datetime import datetime

而且main.py中import了a:

from a.a import *

那么main.py中可以直接使用time(),datetime()相关函数,不需要再import了

此时如果main.py中 import time,并且这样调用相关函数time.time() 或time.sleep(1) ,会出现报错。

即使重复调用时,也要保证调用的一致性。

 

posted @ 2017-09-28 11:16  桃乐丝  阅读(6509)  评论(0编辑  收藏  举报