日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python3 class init_python3 module中__init__.py的需要注意的地方

發(fā)布時間:2024/7/23 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python3 class init_python3 module中__init__.py的需要注意的地方 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

網(wǎng)上關(guān)于__init__.py的作用的資料到處都是,我在此就不再啰嗦哪些了。

若有需要、請各位看官去搜搜即可。

最近剛開始用Python3 就遇到了這個比較有意思的事情

閑言少敘,下面要介紹的是python3中__init__.py中的一些略微不同的地方

目錄結(jié)構(gòu)如下:

├── mdl

│ ├──__init__.py

│ ├── bar.py

│ └── foo.py

└── test.py

文件內(nèi)容,從上至下,依次為

mdl/__init__.py:

#encoding:utf-8

from .foo import Foo #python2、3都適用

from .bar import Bar #python2、3都適用#from mdl.foo import Foo #python2、3都適用#from mdl.bar import Bar #python2、3都適用#from foo import Foo #python3不適用#from bar import Bar #python3不適用

mdl/bar.py:

classBar():def __init__(self):pass

mdl/foo.py

classFoo():def __init__(self):pass

test.py

from mdl.foo importFoofrom mdl.bar importBar

f=Foo()

b= Bar()

大家看到的貼的代碼,可能就知道我所要說的是什么意思了吧……

對,沒錯。

之前在我們使用python2的時候(至少從python2.6之后是這樣),我們通常將__init__.py置空(PS:置空的話,與python3也可以通用)或者直接(如下圖所示)

from foo importFoofrom bar import Bar

然后可以正常地愉快地使用python test.py,沒有任何報錯信息。

但是在python3的時候(至少從python3.4之后是這樣),我們這么來做

from foo importFoofrom bar import Bar

運行python test.py發(fā)現(xiàn)出錯了,囧……

ImportError: No module named 'foo'

別的我也不多說了,我想大家也都看明白了

建議,大家之后都使用這種方式(通用用法)

from .foo importFoofrom .bar import Bar

【附錄】

1、在python2來運行程序(即python test.py)之后,發(fā)現(xiàn)

├── mdl

│?? ├──__init__.py

│?? ├──__init__.pyc

│?? ├── bar.py

│?? ├── bar.pyc

│?? ├── foo.py

│?? └── foo.pyc

└── test.py

(對,我們很常見的.pyc出現(xiàn)了)

2、在python3來運行程序之后,發(fā)現(xiàn)

├── mdl

│?? ├──__init__.py

│?? ├──__pycache__│?? │?? ├──__init__.cpython-34.pyc

│?? │?? ├── bar.cpython-34.pyc

│?? │?? └── foo.cpython-34.pyc

│?? ├── bar.py

│?? └── foo.py

└── test.py

(看到了不同了吧……)

總結(jié)

以上是生活随笔為你收集整理的python3 class init_python3 module中__init__.py的需要注意的地方的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。