python包中__init__.py文件的作用

__init__.py文件最常用的作用是标识一个文件夹是一个 python包。

__init__.py文件的另一个作用是定义模糊导入时要导入的内容。

当我们使用类似 from package import * 的导入语句的时候就是在使用模糊导入了,这时包的编写者就可以在__init__.py文件中定义 __all__ 来限制模糊导入的内容。

这样可以避免将一些只在包内使用的方法或变量暴露给用户。

__init__.py还可以简化导入过程,比如:

Django中的 models文件有时会有很多个表,并且每个表都有很多的属性和方法,这样就会使得 models文件变得很臃肿。

所以我们会把创建一个 models包,在这个包里每个表都单独用一个 py文件来保存,但是这样在导入的时候会有一些麻烦。

现在假设我们有一个 User表,按照上面我们的方法我们有一个 models文件夹,文件夹里有一个 User.py文件,这个文件里保存着我们的 User表的类。

这样当我们在其他文件导入 User类时的导入语句就是 from app.models.User import User 但是我们更习惯原来的写法 from app.models import User

这时我们就可以在 models里的 __init__.py文件中导入 User类,这样我们就可以使用原来的写法来导入User类了。

# models.__init__.py
from .User import User

python包中__init__.py文件的作用的更多相关文章

  1. Python包中 __init__.py文件的作用

    原创连接 https://www.cnblogs.com/AlwinXu/p/5598543.html Python包中 __init__.py文件的作用 在创建python包的过程中,IDE都会在包 ...

  2. python 项目中包中__init__.py文件的作用

    开发python项目时,我遇到了一个这样的现象,当我新建一个pythonpackage时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很不了解这个空文件的作用是什么, ...

  3. Python模块包中__init__.py文件的作用

    转载自:http://hi.baidu.com/tjuer/item/ba37ac4ce7482a0f6dc2f08b 模块包: 包通常总是一个目录,目录下为首的一个文件便是 __init__.py. ...

  4. python中__init__.py文件的作用

    问题 在执行models.py时,报ImportError:No module named transwarp.db的错误,但明明transwarp下就有db.py文件,路径也没有错误.真是想不通.后 ...

  5. 转载:【学习之家】Python中__init__.py文件的作用

    Python中__init__.py文件的作用详解 Python中__init__.py文件的作用详解 来源:学习之家 作者:xuexi110 人气:357 发布时间:2016-09-29 摘要:__ ...

  6. Python中__init__.py文件的作用详解

    转自http://www.jb51.net/article/92863.htm Python中__init__.py文件的作用详解 http://www.jb51.net/article/86580. ...

  7. Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用

    在eclipse中用pydev开发Python脚本时,我遇到了一个这样的现象,当我新建一个pydev package时,总会自动地生成一个空的__init__.py文件,因为是python新手,所以很 ...

  8. 18.Python模块包(pycharm右键创建文件夹和python package的区别)中__init__.py文件的作用

    原来在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了.当 ...

  9. Python包中__init__.py作用

    在创建python包的过程中,IDE都会在包根目录下创建一个__init__.py文件,该Python文件默认是空的.目录结构如下: Pycharm下的package树结构: 在Finder中的目录结 ...

随机推荐

  1. 分布式爬虫-bilibili评论

    实属课程需要,不然早就放弃在半路了.维持了断续半个多月的 bug 调试,突然就实现了.很是欣慰.网上关于分布式爬虫的都是一些介绍,实战的不多并且都很相似,说的云来雾去的,只是项目的流程.可能是项目一路 ...

  2. AWD模式搅屎模式

    AWD模式搅屎模式 ###0x01 出题思路 ####1:题目类型 1-出题人自己写的cms,为了恶心然后加个so. 2-常见或者不常见的cms. 3-一些框架漏洞,比如ph师傅挖的CI这种 #### ...

  3. GNS3

    什么是GNS? GNS Graphical Network Simulator Simulator or Emulator? 尽管GNS全拼包含simulator,但实际上是emulator.我们说其 ...

  4. C 格式化的输入输出(printf scanf)

    - 左对齐 (默认右对齐) printf("%-9d\n",123); 123 printf("%9d\n",123);          123 printf ...

  5. Spark(二)算子详解

    目录 Spark(二)算子讲解 一.wordcountcount 二.编程模型 三.RDD数据集和算子的使用 Spark(二)算子讲解 @ 一.wordcountcount 基于上次的wordcoun ...

  6. 启动nginx 80端口被占用:tcp 0 0 127.0.0.1:80 127.0.0.1:34932 TIME_WAIT -

    1.启动nginx命令./sbin/nginx 2.提示80端口被占用 nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already ...

  7. Python中的if和while

    if 判断 if形式有三种: 1.if ... 2.if ... else ... 3.if ... elif ... else ... 实例: inp = raw_input('>>&g ...

  8. TransactionSynchronizationManager用法和含义(转)

    原文链接:https://blog.csdn.net/ly199108171231/article/details/92984574 当我们有业务需要在事务提交过后进行某一项或者某一系列的业务操作时候 ...

  9. python manage.py makemigrat Please select a fix: 1) Provide a one-off default now (will be set on all existing rows with a null value for this column) 2) Quit, and let me add a default in models.py

    更新models字段 出现的问题: $ python manage.py makemigrations None You are trying to add a non-nullable field ...

  10. 省市县数据(txt)

    下载地址:https://pan.baidu.com/s/1x1uR9KxzlxAbn5bgN6ZfrQ 提取码:ky8z