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