簡體   English   中英

如何針對該類的幫助文件正確組織Python類定義?

[英]How to properly organize a Python class definition with respect to helper files for that class?

這可能是之前被問過但我找不到我的具體問題的答案(相當一般......)

這是我的問題的一個例子。 假設我的包名為'school',我有一個名為'book'的類,其中包含.py文件,其中包含其方法的內容。 我不確定如何組織它以使import語句看起來不奇怪。

我如何組織文件?

/school/
        pencil/
        book/
             __init__.py
             read.py
             burn.py
             book.py

我希望能夠做到這樣的事情,因為它最有意義:

from school import Book
b = Book(name="The Bible")
b.read()

但是從上面的文件結構中,我必須這樣做:

from school.book import Book
b = Book(....etc

要么

from school import book
b = book.Book(...etc

這些都很笨拙/重復......我在這里錯過了什么?

您認為包與我們認為的類混淆。 就個人而言,我將每個類定義和與該類直接相關的所有函數放在同一個.py文件中。 例如,讀取不是一個對象,所以我將它作為一個函數放在Book類下,而不是它自己的.py文件。 所以,結構看起來像這樣。

/school/
    pencil.py
    book.py

在book.py里面,你會有這樣的東西

class Book():
    def __init__(self,name,author,isbn,your_variable_here):
        #Your init method

    def read(self,kid):
        return "{0} is reading {1}.".format(kid,self.name)

    def burn(self,library,lighter):
        library.remove(self)
        lighter.light(self)
        return "Preparing to burn people."

然后,您的導入看起來像這樣。

from school import book
    b = book.Book("The Art of War","Sun Tzu",'999342052X','Books rock!')
    b.read(ike) #This assumes ike is an object, probably of the class Student, defined and imported from elsewhere
    b.burn(library,lighter) #Once more, I'm assuming these are objects for which you've imported the definition and defined them earlier.

這個系統的這個優點是它更接近現實的模型。 而不是由文件結構捆綁的一堆函數(正如您所指出的那樣,可以進行復雜化),而是按類將其分組為邏輯組和構造。 但是,我認為學生應該具有讀取功能,並且庫應該具有結帳功能,只留下具有刻錄功能的書籍。 但那是因為書不讀,人們會這樣做。 書籍不會檢查,圖書館也可以。 這是一個如何組織它的問題。

暫無
暫無

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

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