какие паттерны применяются чаще всего на практике и где
>>> from yourapplication import db
>>> db.create_all()
sqlalchemy_utils.database_exists()
if request.method == 'POST' and search_form.validate_on_submit():
if request.method == 'POST':
if search_form.validate_on_submit():
print('form is valid')
else:
print('form is not valid')
choices=[(str(item.id), item.searcher) for item in Searcher.query.all()]
Проблема в том, что после запуска командой flask run парсер отрабатывает, но ...
try:
html = requests.get(url, headers=self.headers)
except Exception as e:
print('Root page parse is failed', e)
# Ваши инструкции для ошибочной ситуации
return html.text
postgres=# CREATE DATABASE joba_finder;
CREATE DATABASE
postgres=# CREATE USER jf_user WITH PASSWORD 'qwerty';
CREATE ROLE
postgres=# \l joba_finder
Список баз данных
Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа
-------------+----------+-----------+-------------+-------------+---------------
joba_finder | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 |
(1 строка)
postgres=# GRANT ALL PRIVILEGES ON DATABASE joba_finder to jf_user;
GRANT
postgres=# \l joba_finder
Список баз данных
Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа
-------------+----------+-----------+-------------+-------------+-----------------------
joba_finder | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | jf_user=CTc/postgres
(1 строка)
postgres=# select version();
version
--------------------------------------------------------------------------------------------------------
PostgreSQL 11.2 (Debian 11.2-2) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-2) 8.3.0, 64-bit
(1 строка)
postgres=# select
postgres-# \l joba_finder
Список баз данных
Имя | Владелец | Кодировка | LC_COLLATE | LC_CTYPE | Права доступа
-------------+----------+-----------+-------------+-------------+-----------------------
joba_finder | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | jf_user=CTc/postgres
(1 строка)
postgres-# 1;
?column?
----------
1
(1 строка)
worker.pay = 100500
Boss.setPay(worker, 100500)
worker = Worker(10)
worker.getPay()
worker.__class__.setPay = Boss.setPay # мутим
worker.setPay(100500) # мутим
del worker.__class__.setPay # мутим
worker.getPay()
worker.setPay(20) # я не при делах!
worker.getPay()
newspaper.add_news('Сообщение')
) добавить строчку newspaper.register('abc')
, то лишь выполнение программы закончится с ошибкой. Если код сложнее представленного, ошибка может всплыть совсем не сразу. Тот же Pycharm данную ошибку никак не сможет обнаружить.from typing import List
from abc import ABC, abstractmethod
class Observer(ABC):
@abstractmethod
def update(self, message: str) -> None:
pass
class Observable(ABC):
@abstractmethod
def register(self, observer: Observer) -> None:
pass
@abstractmethod
def notify_observers(self, message: str) -> None:
pass
class Newspaper(Observable):
def __init__(self) -> None:
self.observers: List[Observer] = []
def register(self, observer: Observer) -> None:
self.observers.append(observer)
def notify_observers(self, message: str) -> None:
for observer in self.observers:
observer.update(message)
def add_news(self, news: str) -> None:
self.notify_observers(news)
class Citizen(Observer):
def __init__(self, name: str) -> None:
self.name = name
def update(self, message: str) -> None:
print('{} получил: {}'.format(self.name, message))
if __name__ == '__main__':
newspaper = Newspaper()
newspaper.register(Citizen('Иван'))
newspaper.register(Citizen('Василий'))
newspaper.register('abc')
newspaper.add_news('Сообщение')
(VENV~1) D:\My Documents\PycharmProjects\tst>mypy --strict tst105.py
tst105.py:49: error: Argument 1 to "register" of "Newspaper" has incompatible type "str"; expected "Observer"