Estoy creando una clase de generador de consultas que ayudará a construir una consulta para mongodb a partir de parámetros de URL. Nunca he hecho mucha programación orientada a objetos, o clases diseñadas para consumo por personas que no sean yo mismo, además de usar construcciones de lenguaje básico y el uso de modelos integrados de django.¿Deben devolverse los métodos de clase internos o simplemente modificar las variables de instancia en python?
Así que tienen esta clase QueryBuilder
class QueryHelper():
"""
Help abstract out the problem of querying over vastly
different dataschemas.
"""
def __init__(self, collection_name, field_name, params_dict):
self.query_dict = {}
self.params_dict = params_dict
db = connection.get_db()
self.collection = db[collection_name]
def _build_query(self):
# check params dict and build a mongo query
pass
Ahora en _build_query
voy a estar revisando el dict params y llenar query_dict
de manera que pase a Mongo find()
función. Al hacer esto, me preguntaba si había un enfoque absolutamente correcto para si _build_query
debería devolver un diccionario o si solo debería modificar self.query_dict
. Como es un método interno, supongo que está bien simplemente modificar self.query_dict
. ¿Hay una manera correcta (pythonic) de acercarse a esto? ¿Es esto tonto y no una decisión de diseño importante? Cualquier ayuda es apreciada. Gracias.
'.execute()' no es necesario. Puede disparar la ejecución usando '.all()', '.first()', '.one()'. – jfs
Claro, eso es bueno si tienes más de un método que realmente hace algo. – kindall