当前位置:首页 » 编程语言 » initpython

initpython

发布时间: 2022-07-22 06:46:20

python里面 init的用法

类的构造函数,用于初始化类成员等,只能用__init__
,不能换其他名字
设有个类myclass,
相当于c++,java里面的
myclass()

Ⅱ python中含__init__.py 的文件才会被认作是一个包,为什么呢,这个文件有什么作用呢

1、__init__.py是Python中package的标识

__init__.py 文件的一个主要作用是将文件夹变为一个Python模块,Python 中的每个模块的包中,都有__init__.py 文件

2、批量引入(定义__all__用来模糊导入)

我们在python中导入一个包时,实际上是导入了它的__init__.py文件,这样我们可以在__init__.py文件中批量导入我们所需要的模块,而不再需要一个一个的导入。

3、配置模块的初始化操作,这个文件也是一个正常的python代码文件,因此可以将初始化代码放入该文件中。

(2)initpython扩展阅读

python中__init__.py文件的作用实例:

python的每个模块的包中,都有一个__init__.py文件,有了这个文件,我们才能导入这个目录下的mole。__init__.py里面还是可以有内容的,我们在导入一个包时,实际上导入了它的__init__.py文件。
我们可以再__init__.py文件中再导入其他的包,或者模块。

[python]

import readers

import writers

import commands

import users

import meta

import auth

import admin

这样,当我们导入这个包的时候,__init__.py文件自动运行。帮我们导入了这么多个模块,我们就不需要将所有的import语句写在一个文件里了,也可以减少代码量。不需要一个个去导入mole了。

Ⅲ python中的__init__()是什么意思呢

python中的__init__()时类的初始化函数,比如:

classObj:
def__init__():
print1
obj=Obj()#这时候调用__init__这个方法

如果解决了您的问题请采纳!
如果未解决请继续追问

Ⅳ Python中的init.py有什么作用

你指的应该是是__init__.py文件,以下下详细解释:


__init__.py该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。

它具有以下几个作用:


1. 标识该目录是一个python的模块包(mole package)

如果你是使用python的相关IDE来进行开发,那么如果目录中存在该文件,该目录就会被识别为 mole package 。


2. 简化模块导入操作

假设我们的模块包的目录结构如下:

.

└── mypackage
├── subpackage_1
│ ├── test11.py
│ └── test12.py
├── subpackage_2
│ ├── test21.py
│ └── test22.py
└── subpackage_3
├── test31.py
└── test32.py


如果我们使用最直接的导入方式,将整个文件拷贝到工程目录下,然后直接导入:


from mypackage.subpackage_1 import test11

from mypackage.subpackage_1 import test12

from mypackage.subpackage_2 import test21

from mypackage.subpackage_2 import test22

from mypackage.subpackage_3 import test31

from mypackage.subpackage_3 import test32

这样的话,看起来就会很麻烦,查找的时候也会麻烦,此时__init__.py就起到了简化的作用。


2.1init.py 是怎么工作的?

实际上,如果目录中包含了__init__.py时,当用 import 导入该目录时,会执行__init__.py里面的代码。我们在mypackage目录下增加一个__ init __.py文件来做一个实验:

.
└── mypackage
├── __init__.py
├── subpackage_1
│ ├── test11.py
│ └── test12.py
├── subpackage_2
│ ├── test21.py
│ └── test22.py
└── subpackage_3
├── test31.py
└── test32.py

mypackage/__init__.py里面加一个print,如果执行了该文件就会输出

print("You have imported mypackage")

下面直接用交互模式进行 import

>>> import mypackage
You have imported mypackage

很显然,__init__.py在包被导入时会被执行。

2.2 控制模块导入

我们再做一个实验,在 mypackage/init.py 添加以下语句:

from subpackage_1 import test11

我们导入 mypackage 试试:

>>> import mypackageTraceback (most recent call last):
File "<stdin>", line 1, in <mole>
File "/home/taopeng/Workspace/Test/mypackage/__init__.py", line 2, in <mole>
from subpackage_1 import test11ImportError: No mole named 'subpackage_1'

报错了。。。怎么回事?
原来,在我们执行import时,当前目录是不会变的(就算是执行子目录的文件),还是需要完整的包名。

from mypackage.subpackage_1 import test11

综上,我们可以在init.py 指定默认需要导入的模块

2.3 偷懒的导入方法

有时候我们在做导入时会偷懒,将包中的所有内容导入

from mypackage import *

这是怎么实现的呢?__all__变量就是干这个工作的。
__all__关联了一个模块列表,当执行from xx import *时,就会导入列表中的模块。我们将__init__.py修改为 :

__all__ = ['subpackage_1', 'subpackage_2']

这里没有包含subpackage_3,是为了证明__all__起作用了,而不是导入了所有子目录。

>>> from mypackage import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']

>>>

>>> dir(subpackage_1)['__doc__', '__loader__', '__name__', '__package__', '__path__', '__spec__']

子目录的中的模块没有导入!!!
该例子中的导入等价于:from mypackage import subpackage_1, subpackage_2
因此,导入操作会继续查找 subpackage_1 和 subpackage_2 中的__init__.py并执行。(但是此时不会执行 import *)
我们在 subpackage_1 下添加__init__.py文件:

__all__ = ['test11', 'test12']# 默认只导入test11

from mypackage.subpackage_1 import test11

再来导入试试

>>> from mypackage import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'subpackage_1', 'subpackage_2']

>>>

>>> dir(subpackage_1)['__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'test11']

如果想要导入子包的所有模块,则需要更精确指定。

>>> from mypackage.subpackage_1 import *

>>> dir()['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'test11', 'test12']


3. 配置模块的初始化操作

在了解了__init__.py的工作原理后,应该能理解该文件就是一个正常的python代码文件。
因此可以将初始化代码放入该文件中。



Ⅳ Python中“__init__”的意义是什么

Python中“__init__”的意义是在类实例创建的时候自动会被执行的。这里只是自己重定义了__init__的行为。

Ⅵ python中的__init__(self)是什么意思呢

Python中,__init__()方法是所谓的对象的“构造函数”,负责在对象初始化时进行一系列的构建操作

假设有如下类:

classworker:
pass

在Python中,对某个类实例进行成员赋值,可以创建不存在的成员:

>>>a=worker()
>>>a.pay=55000
>>>a.name='Bob'

如果对于每一个worker类的实例对象,都要进行如此赋值的话,这个类会变得很难使用

另外,对于用于特殊场合的类,可能要求在对象创建时,进行连接数据库、连接FTP服务器、进行API验证等操作,这些初始化操作,都可以封装在__init__()方法中进行


__init__方法使用如下规则定义:

classex:
def__init__(self):
pass

__init__方法必须接受至少一个参数即self,Python中,self是指向该对象本身的一个引用,通过在类的内部使用self变量,类中的方法可以访问自己的成员变量,简单来说,self.varname的意义为”访问该对象的varname属性“

当然,__init__()中可以封装任意的程序逻辑,这是允许的,__init__()方法还接受任意多个其他参数,允许在初始化时提供一些数据,例如,对于刚刚的worker类,可以这样写:

classworker:
def__init__(self,name,pay):
self.name=name
self.pay=pay

这样,在创建worker类的对象时,必须提供name和pay两个参数:

>>>b=worker('Jim',5000)

Python会自动调用worker.__init__()方法,并传递参数。


通常情况下,self形参由Python自动赋值,但是,在类继承中,并不是这样

例如,Python的HTML处理工具HTMLParser,是一个基于OOP模型的工具,要使用该工具,必须编写一个类,继承html.parser.HTMLParser类,并重载一系列方法,以定制自己的功能

fromhtml.parser.HTMLParser

classex2(HTMLParser):
def__init__(self):
HTMLParser.__init__(self)

此处,需要调用了HTMLParser类的__init__方法,而且,此处手动给HTMLParser.__init__()方法的self形参赋值,事实上,如果不显式指定self形参的值,Python不会在此处自动为HTMLParser.__init__()方法的self形参进行赋值

如此设计的原因是,在子类中需要获得超类的成员和方法,而通过在子类的__init__方法中调用超类的__init__方法,并手动给它传递指向子类的self值,可以使超类的__init__方法将所初始化的变量设置成子类的变量,这样,就可以在子类中直接访问超类的变量了。

Ⅶ Python中关于类的疑问,__init__()的意义是什么

  1. python哲学里有这么一句:Explicit is better than implicit.明了胜于晦涩。也就是说init更好地说明了是初始化,构造函数,和其他面向对象语言是类似的思路。没看到哪里有你说的python是追求简洁。

  2. class Car(make,model,year)这种写法已经被继承关系占用了

Ⅷ python init函数

问:对于python中的初始化init这个怎么理解啊?

答:相当于类的构造函数,用来初始化变量等。


问: param = self._args['receiving'].replace("\'", "'")这一句是啥意思啊?还有addReceiving(self)中self到底是什么啊?

答:在对class进行调用的过程中,会首先执行__init__这个构造函数,可以看到在构造函数中,对_args进行了赋值,在python中"_"一般代表这个参数是private的。


问:我的理解是args是LogisticsService类的一个属性,addReceiving(self)方法中的参数self就是LogisticsService类中的args。求大神指导!!

答:大神来了,args是一个字典类型,是LogisticsService的在init初始化的一个字段。


大神做到底,再给你个示例,你琢磨一下

Ⅸ python为什么要有一个init函数 知乎

__init__()是为了做初始化用的

我们初始化得时候不一定要使用__init__()进行初始化,可以直接定义

比如

classtest(self):
test_a="123"

这里就初始话了一个变量test_a = "123",但这样就太固定

而__init__()的好处在于它可以接收参数并初始化

__init__(self,testa):

test_a = testa

这样类就可以初始化话一个动态的变量,更加灵活

而且直接test("123")就将test_a 初始成123了

热点内容
压缩内存软件 发布:2025-01-31 16:51:39 浏览:145
脚本lcd 发布:2025-01-31 16:41:02 浏览:515
安卓selinux干什么用的 发布:2025-01-31 16:32:04 浏览:531
侠盗猎车手加钱密码是多少 发布:2025-01-31 15:44:28 浏览:662
没密码怎么登微信 发布:2025-01-31 15:33:51 浏览:737
c语言死机程序 发布:2025-01-31 15:07:52 浏览:18
编程教育装修 发布:2025-01-31 15:04:38 浏览:402
函数和存储过程的区别 发布:2025-01-31 14:39:12 浏览:610
地下室柱子箍筋的加密 发布:2025-01-31 14:36:11 浏览:935
手机拍摄视频在哪个文件夹 发布:2025-01-31 14:34:28 浏览:761