繁体   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