Tworzę klasę konstruktora zapytań, która pomoże w skonstruowaniu zapytania dla mongodb z parametrów URL. Nigdy nie robiłem zbyt wiele programowania obiektowego lub zaprojektowałem klasy do konsumpcji przez ludzi innych niż ja, oprócz używania podstawowych konstrukcji językowych i używania wbudowanych modeli Django.Czy metody klasy wewnętrznej powinny zwracać wartości lub po prostu modyfikować zmienne instancji w pythonie?
Więc mam ten QueryBuilder
klasa
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
Teraz w _build_query
i będzie sprawdzenie dict params i zapełnianie query_dict
tak aby przekazać go do Mongo na find()
funkcję. Robiąc to, zastanawiałem się, czy istnieje absolutne poprawne podejście do tego, czy _build_query
powinien zwrócić słownik, czy też powinien zmodyfikować tylko self.query_dict
. Ponieważ jest to metoda wewnętrzna, zakładam, że wystarczy zmodyfikować self.query_dict
. Czy istnieje właściwy sposób (pythonic) sposób podejścia do tego? Czy to po prostu głupie i nie jest to ważna decyzja projektowa? Każda pomoc jest doceniana. Dziękuję Ci.
'.execute()' jest niepotrzebne. Możesz uruchomić wywołanie używając '.all()', '.first()', '.one()'. – jfs
Oczywiście, to dobrze, jeśli masz więcej niż jedną metodę, która faktycznie coś robi. – kindall