首页 > 编程知识 正文

python导入自定义的类(python 导入类)

时间:2023-12-09 23:04:59 阅读:313662 作者:XSVH

本文目录一览:

  • 1、python如何导入自定义模块
  • 2、python怎么导入自己写的包
  • 3、Python 调用自定义类

python如何导入自定义模块

这个问题涉及到包和模块管理。包名和模块名一般是小写。你的文件是下面的结构,需要创建空文件 b/__init__.py,将b目录变成package。

a/a.py

from b.c import index

index()

b/c.py

def index():

    print("hello")

b/__init__.py

a/a.py 里面有两种引用方式,相对引用和绝对引用:

# 如果a.py是 library,两种引用方式都可以

from ..b.c import index

# 如果a.py是 executable,必须使用绝对引用

from b.c import index

如果使用绝对引用,需要确保b所在目录在PYTHONPATH (sys.path)里面,比如可以这样执行:

env PYTHONPATH=. python a/a.py

python怎么导入自己写的包

包(packages)其实也是模块,其类型Type也是module。通常引用自定义模块时有两种方法:

1)将两个文件放在同一目录下。

2)在sys.path下添加要引用的py文件的路径。然后import。

这样的做法,对于少数文件是可行的,但如果程序数目很多,层级很复杂时就比较麻烦了。此时用package就能将多个py文件组织起来,类似于第三方包一样的引用。要方便很多。

package的层次结构与程序所在目录的层次结构相同,且必须包含一个__init__.py的文件。__init__.py可以为空,只要它存在就表明此目录被作为一个package处理。

package1/

__init__.py

subPack1/

__init__.py

module_11.py

module_12.py

module_13.py

subPack2/

__init__.py

module_21.py

module_22.py

……

__init__.py可以为空,只要它存在,就表明此目录应被作为一个package处理。当然,__init__.py中也可以设置相应的内容。

好了,现在我们在module_11.py中定义一个函数:

def funA():

print "funcA in module_11"

return

一.引用模块

在顶层目录(也就是package1所在的目录,当然也参考上面的介绍,将package1放在解释器能够搜索到的地方)运行python:

from package1.subPack1.module_11 import funcA

funcA()

funcA in module_11

这样,我们就按照package的层次关系,正确调用了module_11中的函数。

二.使用通配符*,导入某个module中的所有元素

答案就在__init__.py中。我们在subPack1的__init__.py文件中写

__all__ = ['module_13', 'module_12']

然后进入python

from package1.subPack1 import *

module_11.funcA()

Traceback (most recent call last):

File "", line 1, in

ImportError: No module named module_11

也就是说,以*导入时,package内的module是受__init__.py限制的。

三.在package内部互相调用。

1.如果希望调用同一个package中的module,则直接import即可。也就是说,在module_12.py中,可以直接使用

import module_11

2.如果不在同一个package中,例如我们希望在module_21.py中调用module_11.py中的FuncA,则应该这样:

from module_11包名.module_11 import funcA

四.Python如何找到我们定义的module?

在标准包sys中path属性记录了Python的包路径。

import sys

print(sys.path)

通常我们可以将module的包路径放到环境变量PYTHONPATH中,该环境变量会自动添加到sys.path属性.

另一种方便的方法是编程中直接指定我们的module路径到sys.path 中。

常用的话也可以放在python27libsite-packages文件夹下。

Python 调用自定义类

class_1.py与当前脚本放在同一目录下,再试试from class_1 import MyClass

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。