[英]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.