当前位置:首页 » 编程语言 » python的init方法

python的init方法

发布时间: 2022-09-06 19:32:06

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

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

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

比如

classtest(self):
test_a="123"

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

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

__init__(self,testa):

test_a = testa

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

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

❷ python里面 init的用法

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

❸ python每一个类都有一个init方法么

这个是用于初始化的,__init__这种前后都是两个下划线的,这个是python类内建的方法
还有__str__,__call__等等,很多的

❹ 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方法中定义的__metaclass__=xxx的作用

__metaclass__是Python2的写法,代表指定该类的元类。Python3中对应的写法是class 要定义的类名(metaclass=元类名)

元类是生成类的工厂,就像类是生成对象实例的工厂。在Python中所有类的默认元类是type,如果需要自定义类的生成方式,例如给类添加特定的属性,那么就需要替换默认元类为你自己编写的元类,此时就要用到metaclass语法。一个重要的利用场景就是ORM框架,因为数据库模型类的编写者是无法预知这个类可能有哪些字段的,所以必须要利用元类动态地生成这个类。

关于元类的说明可以看:网页链接

❻ python init和new的区别

类里面的__init__()方法是在类被实例化是自动调用的方法,可以在里面进行一些初始化操作

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

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

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

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

❽ python中__init__()括号里面的变量应该如何写,分别表示什么

__init__(self)相当于其它语言中的构造函数,用于在实例的时候给当前类的实例成员初始化用的,那个self关键字用于引用该类当前本身这个实例用的,如果想在创建实例的时候,多做一些初始化值的操作,则可以在self后面多加一些参数!比如:
#类描述学生
class Student:
def __init__(self,name,age): #构造实例时将参数值传递给当前那个实例的成员
self.name=name
self.age=age

s = Student('tom',20) #此时执行的就是__init__(self,name,age)
print(s.name)
print(s.age)
------------------
tom
20

❾ 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方法无法初始化,请大神赐教

首先你要明白类的三大特性,封装,继承,多态。你这个主要是封装得应用。实际图二也是错误的,无法获得url的值。图一的稍微改下就对了。
def __init__( self,url):
self. url= url
这样在对类引用的时候给url赋值就行了

热点内容
诺基亚密码忘了打什么电话 发布:2024-09-17 03:27:09 浏览:555
树深度优先算法 发布:2024-09-17 03:26:58 浏览:472
跳转页源码 发布:2024-09-17 03:13:05 浏览:543
html文件上传表单 发布:2024-09-17 03:08:02 浏览:785
聊天软件编程 发布:2024-09-17 03:00:07 浏览:726
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662