簡體   English   中英

我應該在自己的.py文件中創建每個類嗎?

[英]Should I create each class in its own .py file?

一般來說,我對Python還是很陌生。

我知道我可以在同一個.py文件中創建多個類,但是我想知道是否應該在自己的.py文件中創建每個類。

例如,在C#中,我將擁有一個處理所有數據庫交互的類。 然后是另一個具有業務規則的類。

在Python中是這種情況嗎?

否。典型的Python風格是將相關類放在同一模塊中。 一個類可能最終以其自己的模塊結束(特別是如果是一個大類),但它本身並不是目標。 而且,當您這樣做時,請不要在課程后給模塊命名,否則最終會使自己和其他人混淆哪個是哪個。

每個.py文件代表一個模塊,因此您應該將邏輯功能,常量和類的組放在同一文件中。

.py文件中的每個類只會在模塊表中創建史詩般的膨脹,因為如果您只對一個類感興趣,您仍然可以

from whatever import SomeClass

我不同意其他人的說法,是的。 對我來說,將每個類放在自己的文件(模塊)中效果更好。 但是也有例外,所以讓我舉一個例子來解釋。

如果您有Foo類,則將其放入名為Foo.py的文件中,其中包含以下部分:

  1. 進口貨
    • 這是您引入依賴關系的地方。
    • 示例: from Bar import * import math from Bar import *
  2. 全球
    • 在這里定義模塊的外部接口,這些外部接口是在模塊外部可見的所有符號。
    • 例如: __all__ = ['Foo']
    • 您也可以在此處定義全局變量(錯誤)和全局常數(良好)。 這些全局變量不需要導出; 可以將它們設為全局代碼只是為了簡化代碼。
    • 示例: PI = 3.14159意味着您可以編寫PI ,而如果在類Foo中定義了PI ,則需要編寫Foo.PI
  3. 功能
    • 在這里定義所有與類Foo相關但不屬於類Foo命名空間的頂級函數。 由於類同時允許使用@staticmethods和內部類,因此它們可能很少見。
    • 示例: def print_foo(foo): print(foo)
  4. 班級
    • 示例: class Foo(object): pass

有時您可能想在同一模塊中放置多個類。 當兩個或多個類在概念上與幾乎總是一起使用它們而從未獨立使用它們有關時,應該執行此操作。 這是例外,不是常規。 在這種情況下,請將所有類名添加到__all__全局__all__

最后,對於每個模塊Foo.py,都應該有一個名為testFoo.py的相應單元測試模塊。

值得一提的另一點是,如果文件太大,則始終可以將其轉換為程序包,從而易於重組而不會破壞客戶端的代碼。

可能不會。 Python文件是“模塊”。 模塊應包含可獨立重用的代碼。 如果這包含幾個類,這是正常的,那完全可以。

是的,每個類都在其自己的文件中。 在具有多個類的文件中甚至導入單個類(或函數),都會導致python執行文件中所有類的定義。 嘗試這個:

manyClass.py

class foo():
   print 'a bunch of time consuming work'

class tryme():
   print 'try me'

現在在解釋器外殼中鍵入此內容...

從許多類進口tryme

一堆費時的工作
試試我

暫無
暫無

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

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