diff --git a/lesson_28/code/decor.py b/lesson_28/code/decor.py new file mode 100644 index 0000000..78d9d57 --- /dev/null +++ b/lesson_28/code/decor.py @@ -0,0 +1,91 @@ +import datetime + + +def myFirstDecorator(fn): + def wrapper(*args): + start = datetime.datetime.now() + #что-то делаем + res = fn(*args) #вызываем функцию которую передали + end = datetime.datetime.now() + print(f"время выполнения функции: { end - start }") + # что-то делаем + return res - 1 + return wrapper + + +# @myFirstDecorator +# def pow_(x, y): +# return x ** y +# +# @myFirstDecorator +# def summ(x, y): +# return x + y + + +class A: + @staticmethod + def summ(self, x, y): + print(self) + self.summ(self, y, ) + return x + y + + def summ_(self, x, y): + return x + y + + +# obj = A() +# print(obj.summ(obj,2,3)) + + +# print(pow_(3,3)) +# print(summ(3,4)) +# fn = myFirstDecorator(pow) +# result = fn(2,2) +# print(result) + + +class Db: + instance = None + def __init__(self, age): + self.age = age + if Db.instance == None: + return + else: + raise Exception() + @staticmethod + def getInstance(age): + if Db.instance == None: + Db.instance = Db(age) + + return Db.instance +# try: +obj = Db.getInstance(10) +obj2 = Db.getInstance(16) + +# print(obj.age) +# print(obj2.age) +# except Exception as e: +# print(e) +from abc import ABC, abstractmethod + +class Absclass(ABC): + def print(self,x): + print("Passed value: ", x) + @abstractmethod + def task(self): + print("We are inside Absclass task") + + @abstractmethod + def task_(self): + print("We are inside Absclass task") + +class test_class(Absclass): + pass + def task(self): + print("We are inside test_class task") + def task_(self): + print("We are inside Absclass task") + +test_obj = test_class() +test_obj.task() +test_obj.print("10") \ No newline at end of file diff --git a/lesson_28/home_task/task42.py b/lesson_28/home_task/task42.py new file mode 100755 index 0000000..f85ebae --- /dev/null +++ b/lesson_28/home_task/task42.py @@ -0,0 +1,5 @@ +# todo: Реализовать собственный класс исключений, которые будут вызываться (бросаться) в случае: +# 1. пользователь ввел некорректное значение в заданном диапазоне +# 2. результат запроса вернул 0 строк +# 3. Произошел разрыв соединения с сервером + diff --git a/lesson_28/manual/lection_except.pdf b/lesson_28/manual/lection_except.pdf new file mode 100755 index 0000000..19eeb57 Binary files /dev/null and b/lesson_28/manual/lection_except.pdf differ diff --git a/lesson_29/home_task/task43.py b/lesson_29/home_task/task43.py new file mode 100755 index 0000000..2de5bde --- /dev/null +++ b/lesson_29/home_task/task43.py @@ -0,0 +1,9 @@ +#todo: Реализовать декоратор в котором нужно подсчитать кол-во вызовов декорированной функции в процессе выполнения кода. +# Выгрузить статистику подсчета в файл debug.log в формате: Название функции, кол-во вызовов, дата-время последнего выполнения +Пример: +render, 10, 12.05.2022 12:00 +show, 5, 12.05.2022 12:02 +render, 15, 12.05.2022 12:07 + +Декоратор должен применяться для различных функций с переменным числом аргументов. +Статистику вызовов необходимо записывать в файл при каждом запуске скрипта. \ No newline at end of file diff --git a/lesson_29/home_task/task44.py b/lesson_29/home_task/task44.py new file mode 100755 index 0000000..a22c100 --- /dev/null +++ b/lesson_29/home_task/task44.py @@ -0,0 +1,33 @@ +# 1. Реализовать класса DB - синглтон. Экземляр класса(подключение) к PostgreSQL +# должно быть единственным. + +# 2. Реализовать фабрику которая создает модели различных производителей + +class Car: + def __init__(self, brand, model): + """Инициализируйте атрибуты brand и model""" + + def make_lada(): + "реализуйте метод для создания автомобиля Lada" + + def make_mercedes(): + "реализуйте метод для создания автомобиля Mercedes" + + def make_toyota(): + "реализуйте метод для создания создания Toyota" + + def __repr__(self): + "Реализуйте логику дандера" + + + +# 2. Реализовать для класса Car абстрактный класс который содержит +# aбстрактные методы sold, discount + + def sold(self): + """Автомобиль продан""" + print(f"Автомобиль {self.brand} {self.model} продан ") + + def discount(self): + """Скидка на автомобиль""" + print(f"На автомобиль {self.brand} {self.model} скидка 5%") \ No newline at end of file diff --git a/lesson_29/manual/lection_function_decorator.pdf b/lesson_29/manual/lection_function_decorator.pdf new file mode 100755 index 0000000..32930f8 Binary files /dev/null and b/lesson_29/manual/lection_function_decorator.pdf differ diff --git a/lesson_29/manual/lection_oop.pdf b/lesson_29/manual/lection_oop.pdf new file mode 100755 index 0000000..65f0d53 Binary files /dev/null and b/lesson_29/manual/lection_oop.pdf differ