簡體   English   中英

別名為python模塊

[英]Alias to python module

我有一些python模塊,我導入為:

from mygraph.draw import pixel

文件結構如下所示:

mygraph/
    __init__.py
    draw.py

draw.py包含def pixel()

現在,我想添加另一個函數line() ,我想將其導入為

from mygraph.draw import line

我可以簡單地添加linedraw.py 但是,我想在一個單獨的文件line.py中使用line()而不要使用draw.py。 但是,如果我將它放在一個單獨的文件中,它將被導入為

from mygraph.line import line

那不是我想要的......

有可能以某種方式“別名” line.py所以它在draw模塊中可見,但是在separete文件中? 我想在draw添加一個虛擬函數

def line():
    return real_line.line()

但在這種情況下,我不會從原始line獲得“docstring”,並且在調用實線函數時我將失去一些性能。

draw.py模塊中試試這個:

from line import line

你應該能夠以mygraph.draw.line調用它,並按照你想要的方式導入它。

我在__init__.py文件中做了很多這樣的事情:以這種方式公開主API。

這樣的結構對你來說更有意義:

mygraph/
    __init__.py
    draw/
        __init__.py
        pixel.py
        line.py

然后在draw/__init__.py你會得到這樣的代碼:

from mygraph.draw.pixel import pixel, redpixel, greenpixel
from mygraph.draw.line import line, redline, greenline

使用你的包很方便:

from mygraph.draw import redpixel, redline

注意循環進口。 例如,如果line需要pixel才能工作,並且你在line.py import pixel ,則不能在pixel.py進行import line ,因為你正在運行循環導入。

一種簡單的方法是將以draw.py添加到draw.py

from line import line

在這種情況下,您也可以從draw.py導入line

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM