當前位置:首頁 » 編程語言 » 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了

熱點內容
b樹磁碟存儲 發布:2025-01-31 19:42:53 瀏覽:837
聯想小新air15怎麼配置環境 發布:2025-01-31 19:06:57 瀏覽:968
什麼配置玩3a 發布:2025-01-31 19:05:22 瀏覽:586
phpoa系統 發布:2025-01-31 18:58:42 瀏覽:10
值e的編程 發布:2025-01-31 18:57:06 瀏覽:977
安卓手機的軟體認證在哪裡 發布:2025-01-31 18:57:01 瀏覽:535
android彈出來 發布:2025-01-31 18:56:56 瀏覽:232
辦公室白領新解壓方法 發布:2025-01-31 18:55:23 瀏覽:558
摩斯密碼短長是什麼意思 發布:2025-01-31 18:50:17 瀏覽:587
類的訪問修飾 發布:2025-01-31 18:42:46 瀏覽:933