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() #понятно из какой базы берем объекты