2014-05-16 41 views
1

我正在尋找一種pythonic方式來處理以下軟件包結構問題。以pythonic方式使用類似java的導入

在我的項目中,我實現了幾個文件解析器。這是我的封裝結構的第一個想法:

myproject 
└── parsers 
    ├── __init__.py 
    ├── parser_a.py 
    └── parser_b.py 

這種方法的缺點是需要進口相當冗長:

from myproject.parser.parser_a import Parser_A 
from myproject.parser.parser_b import Parser_B 

我覺得這進口的還要好:

from myproject.parser import Parser_A 
from myproject.parser import Parser_B 

至少有兩種方法可以實現這一點:

i)將所有解析器放入一個h uge python模塊。

myproject 
└── parser.py 

但是,這將導致巨大的,可能混淆parser.py文件

II)拆分parser.py模塊在多個文件[1]

myproject 
├── parser.py 
└── parsers 
    ├── __init__.py 
    ├── parser_a.py 
    └── parser_b.py 

內容parser.py

from parsers.parser_a import ParserA 
from parsers.parser_b import ParserB 

這種方法避免了單個文件的問題,但是它看起來有點冒險。

這可能是一個意見問題,但我正在尋找pythonic方式來處理這類問題。使用那些縮短的,類似於java的進口是可以接受的嗎?如果是這樣 - 首選方式是什麼?

回答

5

個人而言,我會把一切都在parser.py

另一種常見的選擇是有這樣的佈局:

myproject 
└── parsers 
    ├── __init__.py 
    ├── parser_a.py 
    └── parser_b.py 

,並在__init__.py以下內容:

from parsers.parser_a import ParserA 
from parsers.parser_b import ParserB 

有ISN這不是一個特定的規則,所以這取決於你使用什麼。

請記住,python不是java。在一個文件中定義多個類是完全正確的。

相關問題