Lesson 28, 29
This commit is contained in:
parent
5b6f2916a6
commit
1c5715972c
91
lesson_28/code/decor.py
Normal file
91
lesson_28/code/decor.py
Normal file
@ -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")
|
||||||
5
lesson_28/home_task/task42.py
Executable file
5
lesson_28/home_task/task42.py
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
# todo: Реализовать собственный класс исключений, которые будут вызываться (бросаться) в случае:
|
||||||
|
# 1. пользователь ввел некорректное значение в заданном диапазоне
|
||||||
|
# 2. результат запроса вернул 0 строк
|
||||||
|
# 3. Произошел разрыв соединения с сервером
|
||||||
|
|
||||||
BIN
lesson_28/manual/lection_except.pdf
Executable file
BIN
lesson_28/manual/lection_except.pdf
Executable file
Binary file not shown.
9
lesson_29/home_task/task43.py
Executable file
9
lesson_29/home_task/task43.py
Executable file
@ -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
|
||||||
|
|
||||||
|
Декоратор должен применяться для различных функций с переменным числом аргументов.
|
||||||
|
Статистику вызовов необходимо записывать в файл при каждом запуске скрипта.
|
||||||
33
lesson_29/home_task/task44.py
Executable file
33
lesson_29/home_task/task44.py
Executable file
@ -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%")
|
||||||
BIN
lesson_29/manual/lection_function_decorator.pdf
Executable file
BIN
lesson_29/manual/lection_function_decorator.pdf
Executable file
Binary file not shown.
BIN
lesson_29/manual/lection_oop.pdf
Executable file
BIN
lesson_29/manual/lection_oop.pdf
Executable file
Binary file not shown.
Loading…
Reference in New Issue
Block a user