1. Система - Windows
2. Python 3.10
Доброго времени суток. пытаюсь решить при помощи классов задачу, условие приложена ниже. уже перебрал кучу вариантов, потому хотелось бы чтоб показали правильное решение или Ваше видение данной реализации. На сейчас у меня основная проблема - вывести значения из базы при наложении фильтров.
Вопросы на текущий момент:
1) архитектурно у меня идет правильная реализация? или как бы лучше было это реализовать
2) write_data - добавляет объект экземпляра data в объект класса Database. соответственно его не получается итерировать, (по крайне мере при моей реализации)
3) реализация фильтра через класс Criteriy - нормальная? или есть решение гораздо более простое и удобное?
4) как тогда правильнее будет осуществлять проверку фильтра в базе данных метод - read_data. ( я предполагал dict1.items() <= dict2.items() - в таком ключе)
Очень буду рад развернутому ответу, так как учусь, а спросить негде...
2. Python 3.10
Доброго времени суток. пытаюсь решить при помощи классов задачу, условие приложена ниже. уже перебрал кучу вариантов, потому хотелось бы чтоб показали правильное решение или Ваше видение данной реализации. На сейчас у меня основная проблема - вывести значения из базы при наложении фильтров.
Вопросы на текущий момент:
1) архитектурно у меня идет правильная реализация? или как бы лучше было это реализовать
2) write_data - добавляет объект экземпляра data в объект класса Database. соответственно его не получается итерировать, (по крайне мере при моей реализации)
3) реализация фильтра через класс Criteriy - нормальная? или есть решение гораздо более простое и удобное?
4) как тогда правильнее будет осуществлять проверку фильтра в базе данных метод - read_data. ( я предполагал dict1.items() <= dict2.items() - в таком ключе)
Очень буду рад развернутому ответу, так как учусь, а спросить негде...
Python:
"""Организуйте архитектуру приложения “База данных” (псевдо).
В роли базы данных у вас будет класс Database,
который будет хранить данные в виде переменной списка.
Класс Database должен иметь методы read_data(criteria), write_data(element).
Для элемента данных напишите класс Data. В данном случае мы будем хранить
данные о пользователях.
Data будет иметь атрибуты: country, name, age, gender, height, weight.
В классе Database метод read_data будет принимать на вход аргумент criteria,
который является словарем вида {“age”: 25}, после чего метод вернет
отдельный список всех элементов у которых данное условие истино."""
class Criteriy:
"""Класс описываюшй фильтр"""
# def __init__(self, **kwargs):
# #print(kwargs)
# self.__dict__ = kwargs
dic = {}
def __init__(self, **kwargs):
# print(kwargs)
self.dic = kwargs
def __str__(self):
return f"{self.dic}"
# Добавление фильтра
dict_ = {'age': 33}
criteria = Criteriy(**dict_)
#print(criteria)
class Data:
"""Класс описываюшй объект базы данных"""
def __init__(self, country, name, age, gender, height, weight):
self.country = country
self.name = name
self.age = age
self.gender = gender
self.height = height
self.weight = weight
def __repr__(self):
return f" country = {self.country}, name = {self.name}, " \
f"age = {self.age}, gender={self.gender}, height={self.height}," \
f"weight = {self.weight}"
class Database:
"""Класс описываюшй базу данных"""
# _my_data = []
def __init__(self, data=[]):
self._my_data = data
def __str__(self):
return self._my_data
def get_my_data(self):
return self._my_data
def read_data(self, criteria):
"""Наложение фильтра и вывод информации"""
a = iter(self._my_data)
print(self._my_data)
# print(criteria.dic, type(criteria.dic) )
# for key in self.get_my_data:
# print('1')
# if criteria.dic in key:
# # next(a)
# print(key, type(key))
while True:
try:
key = next(a)
# temp = list(key)
print(key, type(key))
# if criteria.dic in key:
# print('333')
except StopIteration:
break
def write_data(self, element):
"""Добавление объекта в базу данных"""
print(type(element))
self._my_data.append(element)
# Создаем 3 экземпляка классса Data
data1 = Data('Ukraine', 'Yura', 33, 'm', 183, 85)
data2 = Data('Ukraine', 'Ira', 30, 'f', 163, 55)
data3 = Data('Ukraine', 'Yura2', 33, 'm', 183, 85)
# Создаем экземпляка классса Database
my_base = Database()
# Добавляем наши объекты в базу данных
my_base.write_data(data1)
my_base.write_data(data2)
my_base.write_data(data3)
# Пытаемся считать наш параметр и вывести искомые значения
print('Финальный вызов: ', my_base.read_data(criteria))
# print(my_base.get_my_data())