Lesson 10, 11
This commit is contained in:
parent
a1ebc759b7
commit
b0dd1a1373
BIN
flask_web_2.0.pdf
Normal file
BIN
flask_web_2.0.pdf
Normal file
Binary file not shown.
34
lesson_10/code/ya_kube.py
Normal file
34
lesson_10/code/ya_kube.py
Normal file
@ -0,0 +1,34 @@
|
||||
import random
|
||||
import uuid
|
||||
import datetime
|
||||
from lesson_5.code.db import DICT_DEFENITION_WORD
|
||||
|
||||
class Yakubovich:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def print_menu(self):
|
||||
pass
|
||||
|
||||
def start_game(self):
|
||||
pass
|
||||
|
||||
def save_game(self):
|
||||
pass
|
||||
|
||||
def end_game(self):
|
||||
pass
|
||||
|
||||
def load_game(self):
|
||||
pass
|
||||
|
||||
def _generate_key(self) -> str:
|
||||
pass
|
||||
|
||||
|
||||
game = Yakubovich()
|
||||
game.print_menu()
|
||||
|
||||
|
||||
|
||||
|
||||
32
lesson_10/home_task/task34.py
Normal file
32
lesson_10/home_task/task34.py
Normal file
@ -0,0 +1,32 @@
|
||||
# todo: Перепишите игру "Поле чудес" на классах.
|
||||
import random
|
||||
import uuid
|
||||
import datetime
|
||||
from lesson_5.code.db import DICT_DEFENITION_WORD
|
||||
|
||||
|
||||
class Yakubovich:
|
||||
def __init__(self):
|
||||
pass
|
||||
|
||||
def print_menu(self):
|
||||
pass
|
||||
|
||||
def start_game(self):
|
||||
pass
|
||||
|
||||
def save_game(self):
|
||||
pass
|
||||
|
||||
def end_game(self):
|
||||
pass
|
||||
|
||||
def load_game(self):
|
||||
pass
|
||||
|
||||
def _generate_key(self) -> str:
|
||||
pass
|
||||
|
||||
|
||||
game = Yakubovich()
|
||||
game.print_menu()
|
||||
BIN
lesson_10/manual/oop_i_ii_.pdf
Normal file
BIN
lesson_10/manual/oop_i_ii_.pdf
Normal file
Binary file not shown.
77
lesson_11/code/oop.py
Normal file
77
lesson_11/code/oop.py
Normal file
@ -0,0 +1,77 @@
|
||||
# Инкапсуляция
|
||||
# Метод 1 классика жанра
|
||||
class Config:
|
||||
def __init__(self):
|
||||
self.__store = {}
|
||||
def set_store(self, key, value):
|
||||
if not key in self.__store:
|
||||
self.__store[key] = value
|
||||
def get_store(self, key):
|
||||
if key in self.__store:
|
||||
return self.__store[key]
|
||||
else:
|
||||
raise Exception(f"Нет такого ключа '{key}'")
|
||||
|
||||
cnf = Config()
|
||||
cnf.set_store('db', 'llm')
|
||||
cnf.set_store('host', 'localhost')
|
||||
cnf.set_store('port', '5424')
|
||||
cnf.set_store('user', 'postgres')
|
||||
cnf.set_store('passwd', '123')
|
||||
print(cnf.get_store('db'))
|
||||
print(cnf.get_store('host'))
|
||||
try:
|
||||
print(cnf.get_store('hosts'))
|
||||
except Exception as e:
|
||||
print(e.__repr__())
|
||||
|
||||
|
||||
# Метод 2 дандеры __getattr__ _setattr__
|
||||
class SuperConfig():
|
||||
def __init__(self):
|
||||
self.__store = {}
|
||||
|
||||
def __getattr__(self, key):
|
||||
# print(__store)
|
||||
if key in self.__store:
|
||||
return self.__store[key]
|
||||
else:
|
||||
raise Exception(f"Нет такого ключа '{key}'")
|
||||
|
||||
def __setattr__(self, key, value):
|
||||
if key == '_SuperConfig__store':
|
||||
print(key)
|
||||
self.__dict__[key] = value
|
||||
return None
|
||||
if not key in self.__store:
|
||||
self.__store[key] = value
|
||||
else:
|
||||
raise Exception(f"Ключ уже существует '{key}'")
|
||||
|
||||
cnf = SuperConfig()
|
||||
cnf.db = "llm"
|
||||
cnf.host = "localhost"
|
||||
print(cnf.db)
|
||||
print(cnf.host)
|
||||
print(cnf.__dict__)
|
||||
|
||||
# Метод 3 property
|
||||
class DB:
|
||||
def __init__(self, namedb, host, port ):
|
||||
self.__namedb = namedb
|
||||
self.__host = host
|
||||
self.__port = port
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.__namedb} {self.__host} "
|
||||
|
||||
@property
|
||||
def namedb(self):
|
||||
return self.__namedb
|
||||
|
||||
@namedb.setter
|
||||
def namedb(self, value):
|
||||
self.__namedb = value
|
||||
|
||||
my_db = DB('llm', '127.0.0.1', 5424)
|
||||
print(my_db.namedb)
|
||||
15
lesson_11/home_task/task35.py
Normal file
15
lesson_11/home_task/task35.py
Normal file
@ -0,0 +1,15 @@
|
||||
# Инкапсуляция и property
|
||||
# todo: Класс "Температура"
|
||||
# Создайте класс Temperature, который хранит температуру в градусах Цельсия.
|
||||
# Добавьте свойство для получения и установки температуры в Фаренгейтах и Кельвинах.
|
||||
# Внутренне температура должна храниться только в Цельсиях.
|
||||
|
||||
# celsius (get, set) - работа с Цельсиями.
|
||||
# fahrenheit (get, set) - при установке конвертирует значение в Цельсии.
|
||||
# kelvin (get, set) - при установке конвертирует значение в Цельсии.
|
||||
|
||||
# Пример использования
|
||||
t = Temperature(25)
|
||||
print(f"{t.celsius}C, {t.fahrenheit}F, {t.kelvin}K")
|
||||
t.fahrenheit = 32
|
||||
print(f"После установки 32F: {t.celsius}C")
|
||||
14
lesson_11/home_task/task36.py
Normal file
14
lesson_11/home_task/task36.py
Normal file
@ -0,0 +1,14 @@
|
||||
# Инкапсуляция и property
|
||||
# todo: Класс "Пользователь" (Валидация email)
|
||||
# Создайте класс User. У него должны быть свойства email и password.
|
||||
# При установке email проверяйте, что строка содержит символ @ (простая валидация).
|
||||
# При установке пароля, храните не сам пароль, а его хеш (для простоты можно использовать hash()).
|
||||
# Сделайте метод check_password(password), который проверяет, соответствует ли хеш переданного
|
||||
# пароля сохраненному хешу.
|
||||
|
||||
# Пример использования
|
||||
user = User("test@example.com", "secret")
|
||||
print(user.email) # test@example.com
|
||||
# print(user.password) # AttributeError
|
||||
print(user.check_password("secret")) # True
|
||||
print(user.check_password("wrong")) # False
|
||||
12
lesson_11/home_task/task37.py
Normal file
12
lesson_11/home_task/task37.py
Normal file
@ -0,0 +1,12 @@
|
||||
# Инкапсуляция и property
|
||||
# todo: Класс "Товар" (Защита от отрицательной цены)
|
||||
# Создайте класс Product. У него есть свойства name (простая строка) и price.
|
||||
# При установке цены проверяйте, что она не отрицательная.
|
||||
# Если пытаются установить отрицательную цену, устанавливайте 0.
|
||||
|
||||
|
||||
# Пример использования
|
||||
product = Product("Book", 10)
|
||||
print(product.price) # 10
|
||||
product.price = -5
|
||||
print(product.price) # 0
|
||||
13
lesson_11/home_task/task38.py
Normal file
13
lesson_11/home_task/task38.py
Normal file
@ -0,0 +1,13 @@
|
||||
# Композиция и вычисляемые свойства
|
||||
# todo: Класс "Заказ"
|
||||
# Создайте класс Order (Заказ). Внутри он хранит список экземпляров Product (из предыдущей задачи 37).
|
||||
# Реализуйте свойство total_price, которое вычисляет общую стоимость заказа на основе цен всех товаров
|
||||
# в списке. Реализуйте методы add_product(product) и remove_product(product) для управления списком.
|
||||
|
||||
# Пример использования
|
||||
book = Product("Book", 10)
|
||||
pen = Product("Pen", 2)
|
||||
order = Order()
|
||||
order.add_product(book)
|
||||
order.add_product(pen)
|
||||
print(f"Общая стоимость: {order.total_price}") # 12
|
||||
BIN
lesson_11/manual/oop_i_ii_.pdf
Normal file
BIN
lesson_11/manual/oop_i_ii_.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user