Думаю, вы путаете пакеты с классами.Лично я поместил бы каждое определение класса и все функции, которые были непосредственно связаны с этим классом, в один файл .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.
Это преимущество этой системы в том, что она более точно моделирует реальность.Вместо набора функций, связанных с файловой структурой (которая, как вы заметили, можно запутаться), вы сгруппировали классы в логические группы и конструкции.Тем не менее, я бы сказал, что Студент должен иметь функцию чтения, а библиотека должна иметь функцию извлечения, оставляя книги только с функцией записи.Но это потому, что книги не читают, люди делают.И книги не проверяют, библиотеки делают.Вопрос в том, как вы хотите это организовать.