Принципы ООП и их определения
Наследование - в дочернем классе можно унаследовать, переопределить все методы и атрибуты родительского класса. Создается новый класс на основе существующего.
Инкапсуляция - 1) Сокрытие данных от внешнего воздействия, 2) Объединение методов и свойств в одну капсулу(классс)
Полиморфизм - методы называются одинаково, но работают по разному(разное поведение одного и того же метода в разных классах).
Абстракция - создается класс-пустышка, в котором задаются атрибуты и методы, чтобы не забыть их переопределить в дочерних классах.
Ассоциация - принцип ООП, в котором два класса связаны друг с другом
С помощью какой команды мы можем дать гиту отслеживать нужные файлы, и как можно предотвратить отслежку ненужных файлов или директорий?
Команда git add позволяет добавить файлы в индекс Git, чтобы они начали отслеживаться и вошли в историю коммитов. Вы можете указать конкретные файлы или использовать определенные паттерны, чтобы добавить несколько файлов одновременно.
Файл .gitignore позволяет предотвратить отслеживание ненужных файлов или директорий Git. Вы можете указать шаблоны файлов или директорий, которые Git должен игнорировать, и они не будут отображаться как измененные или неотслеживаемые файлы. Создайте файл .gitignore в корневом каталоге репозитория и добавьте туда нужные шаблоны.
Какой командой можно записать данные в текстовый документ?
.write("string") - записывает строку в файл
.writelines(iterable) - записывает список строк в файл
Является ли данный метод методом класса:
def say_hello(cls, name):
print(f‘Hello {name}!’)
Нет, так как методы класса создаются при помощи декоратора @classmethod
Что такое аггрегатные функции и какие есть?
Функции, которые применяются к стоблцам или наборам значений в таблице и возвращают единственное суммарное значение.
'SUM()' # - высчитывает сумму записей в сгрупированном поле
'AVG()' # - высчитывает среднее значение записей в сгрупированном поле
'MIN()' # - высчитывает минимальное значение записей в сгрупированном поле
'MAX()' # - высчитывает максимальное значение записей в сгрупированном поле
'COUNT()' # - нахождение количества записей в сгрупированном поле
'ARRAY_AGG()' # - аг. функция, которая преобразует несколько значений в массив. выполняет агрегацию значений и возвращает их в виде одномерного массива.
1.Можно ли вызвать атрибут экземпляра класса через класс?
2.Можно ли вызвать атрибут класса через экземпляр класса?
3.Можно ли вызвать метод экземпляра класса через класс?
1.Нет, нельзя. При попытке выйдет AttributeError.
2.Да, можно. При вызове через объект пайтон ищет его сначала в самом объекте, а далее в самом классе. Если атрибут с таким же именем есть и в объекте и в классе, то атрибут объекта будет иметь преимущество.
3.Да, можно. Создается объект от класса. Затем название класса через точку метод объекта и в скобках объект
Для чего нужны коммиты?
Коммиты - это способ сохранить изменения в репозитории кода, чтобы они могли быть отслежены, восстановлены и совместно использованы в будущем.
Какую роль в этом коде играет цикл?
handle = open("test.txt", "r")
for line in handle:
print(line)
handle.close()
Цикл играет роль итерации по строкам текстового файла "test.txt" и вывода каждой строки на экран с помощью команды print().
Имеет ли метод класса доступ к экземпляру класса?
Метод класса имеет доступ к классу, но не имеет прямого доступа к экземпляру класса, так как методы класса выполняются на уровне класса, а не на уровне экземпляра. В методе класса нет доступа к атрибутам или методам экземпляра класса, потому что метод класса не имеет аргумента self, который является ссылкой на экземпляр класса. Если вам нужен доступ к конкретному экземпляру класса, вам следует использовать метод экземпляра, а не метод класса.
Что такое ограничения и какие есть?
Ограничения - это правило или условие, которое накладывается на структуру или данные в бд, чтобы обеспечить целостность данных или определенные правила для выполнения операций.
Чем удобен метод полиморфизм? Где его можно применить?
Удобен там, где код должен быть гибким(т.е. объекты разных классов могут обрабатываться одним и тем же методом, что делает код более универсальным), модульным(каждый объект специфирует собственное поведение через методы, независимо от друих объектов. повышение читаемости кода) и способным к расширению в будущем. Используется в областях программирования, т.е. разработка игр моделирование, обработка данных и т.д.
Что такое локальный и удаленный репозиторий?
# 4. Локальный репозиторий - это копия репозитория, которая находится на локальной машине разработчика. Он содержит всю историю коммитов, веток, тегов и других объектов, необходимых для отслеживания версий и управления проектом. Локальный репозиторий позволяет разработчику работать со своим кодом, делать коммиты, создавать и переключаться между ветками и совершать другие операции контроля версий.
Удаленный репозиторий: Удаленный репозиторий Git - это копия репозитория, которая находится на GitHub. Он используется для совместной работы и совмещает изменения от разных разработчиков. Удаленный репозиторий обеспечивает централизованное хранилище для обмена изменениями между разработчиками, а также для резервного копирования кода и его совместного использования.
Что такое JSON?
JSON - Единый текстовый формат хранения и передачи данных между ПК, приложениями, сервисами и языками программирования. В основном применяется для передачи данных между сервером и веб-приложением (между фронтом и беком).
class Students:
@classmethod
def do_homework(cls):
print('I am doing my homework')
def get_grade(self, grade):
print(f'I got {grade} for my homework')
@staticmethod
def sleep():
print('Zzzz')
student = Students()
student.do_homework() # I am doing my homework
Students.sleep() # Zzzz
Students.get_grade(student, 'B+') # I got B+ for my homework
Students.get_grade('A+')
TypeError: Students.get_grade() missing 1 required positional argument: 'grade'
Какое ключевое есть выполняет основную логику в запросах (выражения условия и возврат соответующего результата)?
CASE - выражение, которое позволяет выполнять основную логику в запросах. используется для проверки значения столбца или выражения и возврата соотствующего результата в зависимости от условия.
Чем принцип инкапсуляции в Python отличается от инкапсуляции в других языках программирования?
В Python нет строгих модификаторов доступа, таких как "protected" и "private", как в некоторых других языках программирования. Вместо этого в Python существует установленные соглашения для обозначения уровня доступа к атрибутам и методам класса.
Что означает pull request?
Pull request (запрос на слияние) - это механизм совместного кодирования Git. Pull request используется для предложения изменений в проект или ветку и отправки этих изменений на обсуждение и рассмотрение командой разработчиков. Когда разработчик хочет внести какие-либо изменения, он создает новую ветку в репозитории и вносит нужные изменения в этой ветке. Затем разработчик отправляет pull request, который является запросом на слияние его ветки с основной веткой проекта (как правило, это ветка master или другая основная ветка). Pull request позволяет команде просмотреть и анализировать внесенные изменения, комментировать код, задавать вопросы и предлагать исправления. Таким образом, pull request обеспечивает процесс код-ревью и позволяет команде принять решение о включении или отклонении предложенных изменений. После проведения необходимого ревью и внесения всех необходимых корректировок, pull request может быть принят и изменения будут слиты с основной веткой проекта.
Нужно ли закрывать текстовый документ после работы с ним в Python и почему?
Да. Закрытие файла позволяет освободить системные ресурсы, связанные с открытым файлом, и гарантировать, что все изменения были записаны на диск. Незакрытый файл в режиме записи может привести к потере данных или возникновению проблем при последующем доступе к файлу.
Что такое конструктор и деструктор?
__new__() -> конструктор, отвечает за создание объекта
__del__() -> деструктор, отвечает за удаление объекта (срабатывает, когда мы заканчиваем работу с объектом, всегда вызывается когда завершается работа интерпретатора)
Виды связей, создание связей, операторы для связей
Один к одному - Один объект относится только к одному объекту.
Один ко многим - У одного объекта связь со многими объектами.
Многие ко многим - Много объектов связаны между друг другом.
JOIN(соединение) - это оператор, используемый для объединения стоблцов из двух таблиц по заданным условиям связи. Позволяет объекдинять данные из нескольких таблиц на основе значений, имеющих общий ключ и связь между ними.
PRIMARY KEY (pk) - ограничение, которое накладывается на поле используемое в связях
FOREIGN KEY (fk) - ограничение, которое накладывается на поле, которое ссылается на pk другой таблицы
class Robot:
def __init__(self):
self.__version = 21
def get_version(self):
print(self.__version)
def set_version(self, version):
self.__version = version
obj = Robot()
obj.get_version()
obj.set_version(31)
obj.get_version()
print(obj.__version)
AttributeError
Из-за чего могут выходить конфликты в git, и каковы способы их решения?
Конфликты в Git могут возникать, когда две или более ветки вносят изменения в одни и те же участки кода или файлы, и Git не может автоматически объединить эти изменения из-за возможных несовместимостей.Решения:
Ручное разрешение
Разработчик может использовать инструменты слияния Git, такие как kdiff3, meld или vimdiff, которые помогут упростить процесс разрешения конфликтов
Откат или отмена изменений
Какой объект возвращает JSON?
Когда идет работа с с JSON в программировании, обычно используется строка JSON, которую затем преобразует в объект или массив в зависимости от необходимости. JSON возвращает данные в виде строки.
__getattr__(self, attr) -> автоматически вызывается при обращении к несуществующему атрибуту экземпляра (работает только когда атрибут не найден)
Как в PostgreSQL добавить новую колонку в существующую таблицу и сделать ее уникальной?
ALTER TABLE имя_таблицы
ADD COLUMN новая_колонка тип_данных UNIQUE;