我對Python中用戶定義的異常以及如何在一個完整的項目中組織它們有一些疑問。Python:在一個完整的項目中組織用戶定義的異常
我有具有以下結構(__init__.py
略)一些子包一個相當複雜的Python項目:
/docs (Documentation)
/apidocs (generated API documentation)
/askindex (my application package)
/test (Unit tests directory)
test_utils.py
... (more tests)
/workers (various worker classes)
communicators.py
processes.py
threads.py
utils.py
main.py (contains the starting point)
data_objects.py (various objects used all around the application)
settings.py (settings of the application)
README.txt
我想實現我自己的異常中的模塊來使用它們「工人包裹的具體錯誤。
我應該在哪裏放置這些例外?我知道我應該有我自己的基本異常,該異常將標準的Exception類繼承爲子類,併爲其他異常繼承它的子類。我應該在「工作人員」下創建一個新的「例外」模塊嗎?將異常類放入它們所在的模塊中?在這種情況下,我應該在哪裏放置我的基類?我的應用程序結構是否被佔用?
我是新來的Python例外,所以請原諒我,如果答案是顯而易見的......
感謝您快速回答。我沒有想到__init__.py模塊。除了包docstring和meta,我從來沒有真正知道要在裏面放什麼。遵循你的例子,異常是否會被引用爲food.RottenException? – 2010-11-15 06:21:53
@馬克:是的。大模塊的一個常見模式是將它們拆分成單獨的模塊,並且讓包'__init __。py'包含相對導入以再次將模塊連接在一起(通常來自xyz import *',其中xyz定義了'__all__')。在這種情況下,這可能不適用,真的。儘管你可能想'導入通信器,進程,線程,utils',就像'os'導入'path'一樣,這樣'import os'就意味着'import os.path'。 – 2010-11-15 06:30:10
@Marc:繼「食物」這個例子之後,「Foodstuff」類將在'__init __。py'中定義,'food.fruit'將'import food',然後具有'class番茄(food.Foodstuff )'。只要你小心,不要使用'從食品進口食品',循環引用是好的(見[這篇關於effbot的文章](http://effbot.org/zone/import-confusion.htm#circular -imports))。 – 2010-11-15 06:33:33