首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从与__init__导入同名的python模块导入对象

时,Python会优先搜索当前工作目录下的同名模块,而不是搜索系统默认的模块路径。这种情况下,可以使用相对导入来明确指定要导入的模块。

相对导入是一种相对于当前模块的导入方式,可以通过使用点(.)来表示相对路径。在这种情况下,可以使用点(.)来表示当前目录,使用双点(..)来表示上一级目录,以此类推。通过使用相对导入,可以避免与同名的init模块发生冲突。

下面是一个示例:

假设当前工作目录下有一个名为test.py的模块,同时也存在一个名为test文件夹,在test文件夹中有一个init.py文件和一个module.py文件。

test.py的内容如下:

代码语言:txt
复制
from .test.module import some_function

some_function()

test文件夹中的init.py文件内容为空。

test文件夹中的module.py文件内容如下:

代码语言:txt
复制
def some_function():
    print("Hello, world!")

在test.py中,通过相对导入的方式导入test文件夹中的module.py模块,并调用其中的some_function函数。这样可以确保导入的是我们所期望的模块,而不是与之同名的init.py模块。

推荐使用腾讯云的云服务器(CVM)来运行Python程序。腾讯云云服务器提供了稳定可靠的计算资源,可以轻松搭建和管理应用程序的运行环境。您可以使用腾讯云云服务器来搭建Python开发环境,同时还可以根据需要选择适合的计算配置和操作系统。

腾讯云云服务器产品介绍链接地址:https://cloud.tencent.com/product/cvm

注意:本答案仅针对问答内容,对于云计算领域的其他问题,建议提供具体的问题描述以获得更详细和准确的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

python module manage

python模块     就是python的程序模块     顶层文件     模块文件1     模块文件2         可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。模块在物理形式上表现为以.py结尾的代码文件。一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件。模块的文件名就是模块的名字加上扩展名.py。每个模块都有自己的名称空间。     python允许“导入”其它模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。python中,模块也是对象;在一个模块顶层定义的所有变量都在被导入时成为了被导入模块的属性。 python的程序架构     一个python程序通常包括一个顶层程序文件和其它的模块文件(0个、1个或多个)     顶层文件:包含了程序的主要控制流程     模块文件:为顶层文件或其它模块提供各种功能性组件。模块首次导入(或重载)时,python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行。python也自带了很多模块,可以使用help(module)查看,这些被称为python标准库文件。 模块的执行环境     模块是被导入的(import),但模块也可以导入和使用其它模块,这些模块可以用python或其它编程语言写成。     模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素。     建议:在顶层文件可以出现大量的控制流语句,而其它的被调用文件仅包含变量、函数及类,这样程序在执行时效率才会高。 python导入模块     在导入模块时只能使用模块名,而不能使用带.py后缀的模块文件名     import语句:导入指定的整个模块,包括生成一个以模块名命名的名称空间     import module1[, module2[, ... moduleN ]]       建议一个import语句只导入一个模块     import module as module_alias     from-import语句: 常用于只导入指定模拟的部分属性至当前名称空间。     from module import name1[, name2[, ... nameN ]]             例:from random import choice,randint,random     建议:在顶层文件可以出现大量的控制流语句,而其它的被调用文件仅包含变量、函数及类,这样程序在执行时效率才会高。     import 和 from - import是赋值语句     import和from 是可执行语句,类似于def,因此,它们可以嵌套在if测试中,出现于def中等等     python执行到这些语句时才会对其进行解析,这意味着,所有来自模块的属性仅在import语句执行后才能使用。     import 和from 都是隐性赋值语句     import 将整个模块对象赋值给一个变量名;from将一个或多个变量名赋值给导入此模块的模块中的同名对象     模块就是名称空间:模块的名称空间可以通过属性__dict__或dir(M)获取;模块属性可通过点号(.)运算符获取,格式为M.attr;模块是一个独立的作用域(本地变量就是全局变量)     import的工作机制     import语句导入指定的模块时会执行三个步骤:        (1) 找到模块文件:在指定的路径下搜索模块文件        (2) 编译成字节码:文件导入时就会编译,因此顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件。        (3) 执行模块的代码来创建其所有定义的对象:模块文件中的所有语句会依次执行,从头至尾,而此步骤中任何对变量名的赋值运算,都会产生所得到的模块文件的属性。     注意:模块只在第一次导入时才会执行如上步骤。后续的导入操作只不过是提取内存中已加载的模块对象。reload可用于重新加载模块。     模块搜索:     python解释器在import模块时必须先找到对应的模块文件     程序的主目录;PYTHONPATH目录(如果设置了些变量);标准链接库目录;任何.pth文件的内容(如果存在.pth文件)     这四个组件组合起来即为sys.path所包含的路径,而python会选择"在搜索路径中的第一个符合导入文件名"的文件。        import sys        sys.path    返回一个路径列表,该路径列表是python解释器需要搜索的路径顺序列表

01

python模块如何查看

对于编译型的语言,比如C#中的一个.cs文件,Java中的一个.java或者编译后的.class文件可以认为是一个模块(但常常不表述为模块);对于解释型的语言会更加直观些,比如PHP的.php文件,在Python中就是.py文件可以认为是一个模块。在“模块”之上有“包”,主要是为了方便组织和管理模块。比如C#中编译后的.dll文件(但常常不表述为包Package,而是库Library),Java将.class打包后的.jar文件,PHP的.phar文件(模仿Java包),在Python中一个特殊定义的文件夹是一个包,可以打包为egg文件。但对于解释型语言“包”并没有编译成低级语言而后打包的意思,只是更加方便模块化和管理模块间的依赖。每种编程语言对于模块和包管理都有一定的约定,不了解这些约定,那会给学习这种语言的带来障碍。下面我想来梳理一下Python的这些约定。

03

Python学习手册--第六部分(类)

面向对象编程 是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对象都有的通用行为。基于类创建对象 时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。使用面向对象编程可模拟现实情景,其逼真程度达到了令你惊讶的地步。 根据类来创建对象被称为实例化 ,这让你能够使用类的实例。在本章中,你将编写一些类并创建其实例。你将指定可在实例中存储什么信息,定义可对这些实例执行哪些操作。你还将编写一些类来扩展既有类的功能,让相似的类能够高效地共享代码。你将把自己编写的类存储在模块中,并在自己的程序文件中导入其他程序员编写的类。 理解面向对象编程有助于你像程序员那样看世界,还可以帮助你真正明白自己编写的代码:不仅是各行代码的作用,还有代码背后更宏大的概念。了解类背后的概念可培养逻辑思维,让你能够通过编写程序来解决遇到的几乎任何问题。

01
领券