Lesson 28, 29

This commit is contained in:
vitaliy 2025-12-11 12:24:03 +03:00
parent 5b6f2916a6
commit 1c5715972c
7 changed files with 138 additions and 0 deletions

91
lesson_28/code/decor.py Normal file
View 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
View File

@ -0,0 +1,5 @@
# todo: Реализовать собственный класс исключений, которые будут вызываться (бросаться) в случае:
# 1. пользователь ввел некорректное значение в заданном диапазоне
# 2. результат запроса вернул 0 строк
# 3. Произошел разрыв соединения с сервером

Binary file not shown.

9
lesson_29/home_task/task43.py Executable file
View 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
View 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%")

Binary file not shown.

BIN
lesson_29/manual/lection_oop.pdf Executable file

Binary file not shown.