本文目录一览:
python怎么引入别的包的类
用 from import 啊,例如:
有一个模块 a.py ,在a.py中有一个names 的类
# a.py
class names(object):
def __init__(self):
self.name = "zhangsan"
# b.py 在b.py中实例化a.py中的 names 类
from a import names
names() # 直接调用就好了
# 或者使用 import a
a.names() # 这样调用
python 怎么引用其他文件的类
在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如包的安装地址。所以如果要在当前脚本引用其他文件,除了将文件放在和脚本同一目录下,还有以下几种方法,
1. 将文件所在位置添加到sys.path中
import sys
sys.path.insert(0, '/path/to/application/app/folder') # or sys.path.append('/path/to/application/app/folder')
import file
2. 在文件目录下新建__init__.py文件然后调用文件
from application.app.folder.file import func_name
init.py文件
a).init.py文件的作用
该文件的主要作用使初始化Python包。如果目录下面包含了该文件,Python解释器就会将该目录当做一个包,下一步就可以使用import语句在别的.py脚本中引用该目录下的文件。一个标准Python模块的结构如下所示:
package/
__init__.py
file.py
file2.py
subpackage/
__init__.py
submodule1.py
submodule2.py
b). __init__文件可以为空但可以用来建立对包的需求。一般来说会在该文件中写那些类,函数等需要被导入到包水平,从而可以被方便的引用。比如:如果file.py文件中有一个File类,在init.py文件中啥都没写时引用File类需要这样操作:
from package.file import File
如果在__init__.py文件中将file导入包,那就在包水平可以直接引用File类:
# in your __init__.py
from file import File
# in your script
from package import File
此外,还需要注意的一点是__init__.py文件中的all变量。如果解释器在__init__.py文件中观察到了__all__变量,那么在运行from package import *时就只会引入__all__变量中列出的那些模块。例如:如果想在上述结构的只引入submodule1模块,那么可以在subpackage/__init__.py文件中定义__all__ = ['submodule1'],当引用subpackage时from subpackage import *就只引入了submodule1模块。
3. 将文件所在目录添加到python的环境变量
export PYTHONPATH=$HOME/pathToYourScripts/:$PYTHONPATH
在vs上怎么用python将一个程序引入另一个程序
python中调用另一个程序有多种不同方式,一种是调用本文件下的某个函数来实现调用,另一种是调用模块或包文件下的函数实现调用,还有一种是通过类方法的方式调用类定义的某段程序。
自身函数的调用时相当方便的,在定义好了函数以后直接按定义的格式调用即可,出现的错误为参数数量不匹配。通过包或模块调用相对自身函数调用比较复杂,需要提前导入包或模块,常用的方法为import或者fromimport,导入成功的前提是对应的包或模块在python路径之下,可以通过sys.path(sys为系统内置模块可以直接使用importsys导入)来查看python路径。以导入第三方包文件requests为例。通过类方法的调用需要在调用之前,实例化一个类对象,通过这个类对象来调用类方法,注意第三个方法为私有方法,不允许类外部访问。
python外部包使用说明方式导入?
除了让包内导入更加显式,这个功能的一部分设计初衷是,为了帮助脚本解决同名文件出现在模块搜索路径上多个不同位置时的二义性。考虑包目录,这定义了一个名为mypkg 的包,其中含有名为mypkg.main和mypkg.string 的模块。现在,假设模块main试图导入名为string的模块。在 Python 2.X和更早版本中,Python会先寻找mypkg目录以执行相对导入。这会找到并导入位于该处的string.py文件,将其赋值给mypkg.main模块命名空间内的名称string。不过,这一导入的本意可能是要导入Python标准库的string模块。可惜的是,在这些Python版本中,无法直接忽略mypkg.string 去寻找位于模块搜索路径更右侧的标准库中的string模块。此外,我们无法使用完整包导入路径来解决这个问题,因为我们无法依赖在每台机器上的标准链接库路径。换句话说,包中的简单导入可能具有二义性而且容易出错。在包内,我们无法确定imports pam语句指的是包内的模块还是包外的模块。一种可能的后果是,一个局部的模块或包会在不经意间隐藏了sys.path 上的另一个模块。在实践中,Python使用者可以避免为他们自己的模块重复使用标准库模块的名称(如果需要标准string库,就不要把新的模块命名为string)。但是,一个包还是有可能意外地隐藏标准库模块。再者,Python 以后可能新增标准库模块,而其名称可能刚好就和自己的一个模块同名。而依赖于没有点号开头相对导入的程序代码同样也不容易理解,因为读者可能对希望使用哪个模块而感到困惑。所以我们最好能在代码中显式地指出导入的解析过程。