class: center, middle, inverse # Об’єктно-орієнтоване Програмування ## Python 101 .footnote[ ###Богдан Кулинич ] --- ## Об’єкти і класи - Об’єкти мають стан і поведінку - В Python все є об’єктом - Кожен об’єкт має тип (клас) --- ## Типи ``` >>> type(1)
>>> isinstance(1, int) True >>> type([1, 2, 3])
>>> isinstance([1, 2, 3], list) True ``` --- layout: true ## Класи --- - Клас задає структуру і поведінку об’єктів цього класу (instances of class) - Структура — атрибути класу, поведінка — це методи класу --- ### команда `class` ```python class Point: def __init__(self, x, y): self.x = x self.y = y def distance_from_origin(self): return math.sqrt(self.x**2 + self.y**2) p = Point(2, 3) isinstance(p, Point) print(p.x) # 2 print(p.y) # 3 print(p.distance_from_origin()) # 1.4142... ``` --- ### Службові методи - `__init__` - `__del__` - `__str__` - `__iter__` - дуже багато інших... --- layout: true ## Наслідування --- - Повторне використання коду з інших класів - Часто позначає відношення підмножини до цілої множини --- ```python class Human: def __init__(self, name): self.name = name def say_hello(self): return "Hi, I'm {}".format(self.name) ``` --- ```python class Student(Human): def __init__(self, name, hardworking): self.name = name self.hardworking = hardworking super().__init__(name) def study(self): if self.hardworking: print('Studying...') else: print('Meh') ``` --- ```python vlad = Student('Vlad', hardworking=True) vlad.say_hello() # Hello, I'm Vlad vlad.study() # Studying... isinstance(vlad, Student) # True isinstance(vlad, Human) # True ```