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

熱點內容
ios應用上傳 發布:2024-09-08 09:39:41 瀏覽:438
ios儲存密碼哪裡看 發布:2024-09-08 09:30:02 瀏覽:870
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:653
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:744
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:173
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:780
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995