Add the use of python as Object-oriented language (Decision)
Используя Классы в нашем проекте, мы улучшим читабельность кода, но нужно быть аккуратным и делать классы с умом
Стоит ознакомится со статьей: Перестаньте писать классы
Пример использования класса:
Функции работающие с базой данных:
def getDatabase(db=DEFAULT_DB_NAME):
...
return mongoClient[db]
def getObjects(db='museums', collection='objects'):
db = getDatabase(db)
return db[collection]
def getRawObjectById(objectId):
collection = getObjects()
return collection.find_one({"_id": objectId})
Пример класса:
class DataBase:
def __init__(self, dbName=DEFAULT_DB_NAME, db='museums', collection='objects'):
self.dbName = dbName
self.db = db
self.collection = collection
self.connect_collection = getObjects()
def getDatabase():
...
return mongoClient[self.dbName]
def getObjects():
db = getDatabase(db)
return db[self.collection]
def getRawObjectById(objectId):
return connect_collection.find_one({"_id": objectId})
...
Преимущество:
Создав экземпляр класса, можно увеличить читабельность. Пример:
MuseumsDB = DataBase()
MuseumsDB.getRawObjectById(objectId) #понятно с какой базой работаем
MuseumsDB.getObjects() #понятно из какой базы берем объекты
Универсальность. Пример:
MuseumsDB = DataBase()
...
PanoramaDB = DataBase(collection='panorama')
PanoramaDB.getRawObjectById(objectId) #понятно в какой базой ищем
...
MuseumsDB.getObjects() #понятно из какой базы берем объекты