Similar presentations:
Программирование Python. Магические методы
1.
DSПрограммирование
Python
Магические методы
2.
ВведениеТема
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
3.
ВведениеТема
На этом уроке:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
4.
ВведениеТема
Познакомимся с понятием «Магический метод»
На этом уроке:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
5.
ВведениеТема
Познакомимся с понятием «Магический метод»
Рассмотрим магический метод __new__()
На этом уроке:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
6.
ВведениеТема
Познакомимся с понятием «Магический метод»
Рассмотрим магический метод __new__()
На этом уроке:
Поймем отличие метода __new__() от метода __init__().
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
7.
ВведениеТема
Познакомимся с понятием «Магический метод»
Рассмотрим магический метод __new__()
На этом уроке:
Поймем отличие метода __new__() от метода __init__().
Научимся использовать другие магические методы
для реализации классов.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
8.
ВведениеТема
Что такое метод класса?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
9.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
10.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
11.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
12.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
13.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
__dict__ — это «магический» атрибут, возвращающий все локальные
атрибуты объекта
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
14.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
__dict__ — это «магический» атрибут, возвращающий все локальные
атрибуты объекта
Для чего нужен метод __init__()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
15.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
__dict__ — это «магический» атрибут, возвращающий все локальные
атрибуты объекта
Для чего нужен метод __init__()?
Метод __init__() нужен для создания инициализатора класса, внутри
которого можно задавать начальные свойства объекта класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
16.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
__dict__ — это «магический» атрибут, возвращающий все локальные
атрибуты объекта
Для чего нужен метод __init__()?
Метод __init__() нужен для создания инициализатора класса, внутри
которого можно задавать начальные свойства объекта класса
Для чего нужен метод __del__()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
17.
ВведениеТема
Что такое метод класса?
Метод класса – это функция, позволяющая взаимодействовать со
свойствами класса.
Для чего нужен параметр self?
self – параметр, передающийся первым при создании метода класса.
Он содержит в себе ссылку на объект, который вызывает метод.
Что такое атрибут __dict__?
__dict__ — это «магический» атрибут, возвращающий все локальные
атрибуты объекта
Для чего нужен метод __init__()?
Метод __init__() нужен для создания инициализатора класса, внутри
которого можно задавать начальные свойства объекта класса
Для чего нужен метод __del__()?
Метод __del__() нужен для создания финализатора класса, внутри
которого описываются действия, происходящие во время удаления
объекта
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
18.
ТеорияВведение в магические методы
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
19.
ТеорияВведение в магические методы
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
20.
ТеорияВведение в магические методы
class Car:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
21.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__():
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
22.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
23.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
24.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
25.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
26.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
27.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
28.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
>>> __main__.Car object at 0x000001EE2B94EA10>
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
29.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
print(my_car.__dict__) # получаем локальные свойства объекта
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
30.
ТеорияВведение в магические методы
class Car:
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
print(my_car.__dict__) # получаем локальные свойства объекта
>>> {'color': 'Белый', 'model': 'Camry', 'speed': 100}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
31.
ТеорияВведение в магические методы
Магические методы – специальные методы, добавляющие
определенную функциональность для объектов класса.
Названия таких методов всегда начинаются и заканчиваются
с двух нижних подчеркиваний. Например, __init__().
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
32.
ТеорияВведение в магические методы
Магические методы – специальные методы, добавляющие
определенную функциональность для объектов класса.
Названия таких методов всегда начинаются и заканчиваются
с двух нижних подчеркиваний. Например, __init__().
Магические методы вызываются автоматически в
определенной ситуации.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
33.
ТеорияМетод __new__()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
34.
ТеорияМетод __new__()
Конструирование любого объекта класса состоит из двух следующих этапов:
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
35.
ТеорияМетод __new__()
Конструирование любого объекта класса состоит из двух следующих этапов:
1
Создание нового экземпляра класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
36.
ТеорияМетод __new__()
Конструирование любого объекта класса состоит из двух следующих этапов:
1
Создание нового экземпляра класса
2
Инициализация созданного объекта
класса
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
37.
ТеорияМетод __new__()
__new__() – магический метод, вызывающийся до метода __init__()
и отвечающий за создание нового экземпляра класса.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
38.
ТеорияМетод __new__()
__new__() – магический метод, вызывающийся до метода __init__()
__init__()
и отвечающий
за создание
нового экземпляра
и
отвечающий
за создание
нового экземпляра
класса. класса.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
39.
ТеорияМетод __new__()
class Car:
def __new__():
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
40.
ТеорияМетод __new__()
class Car:
def __new__(cls):
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
41.
ТеорияМетод __new__()
class Car:
def __new__(cls):
def __init__(self, color, model, speed):
self.color = color # цвет
self.model
= model
# модель
cls – обязательный
первый параметр
в методе
__new__(), ссылающийся на текущий
self.speed = speed # скорость
класс.
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
42.
ТеорияМетод __new__()
class Car:
def __new__(cls):
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
43.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
44.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
45.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
46.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
>>> Работает метод __new__() для класса <class '__main__.Car'>
None
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
47.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
return
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
48.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
49.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color
color #к методам
цвет
super() – функция,
позволяющая=обращаться
«базового» класса и
self.modelработу
= model
модель
реализовывать полноценную
метода#__new__().
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
50.
ТеорияМетод __new__()
class Car:
def __new__(cls, color, model, speed):
print(f'Работает метод __new__() для класса {cls}')
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
>>> Работает метод __new__() для класса <class '__main__.Car'>
<__main__.Car object at 0x000001C11F56A4D0>
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
51.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
52.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
print(args)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
53.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
print(args)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
>>> ('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
54.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
print(args)
return super().__new__(cls)
def __init__(self,
color, model,
speed):
*args (arguments)
– конструкция, позволяющая
обрабатывать
любое количество
= color
# цвет
неименованныхself.color
аргументов. Является
кортежем.
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
print(my_car)
# выводим адрес объекта в терминал
>>> ('Белый', 'Camry', 100)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
55.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
print(args)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
56.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args):
print(f'Работает метод __new__() для класса {cls}')
print(args)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
>>> TypeError: Car.__new__() got an unexpected keyword
argument 'color'
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
57.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args, **kwargs):
print(f'Работает метод __new__() для класса {cls}')
print(args)
print(kwargs)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
58.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args, **kwargs):
print(f'Работает метод __new__() для класса {cls}')
print(args)
print(kwargs)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
>>> {'color': 'Белый', 'model': 'Camry', 'speed': 100}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
59.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args, **kwargs):
print(f'Работает метод __new__() для класса {cls}')
print(args)
print(kwargs)
**kwargs (keyword
arguments) – конструкция, позволяющая обрабатывать любое
return super().__new__(cls)
количество именованных
аргументов. Является словарем.
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
>>> {'color': 'Белый', 'model': 'Camry', 'speed': 100}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
60.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args, **kwargs):
print(f'Работает метод __new__() для класса {cls}')
print(args)
print(kwargs)
**kwargs (keyword
arguments) – конструкция, позволяющая обрабатывать любое
return super().__new__(cls)
количество именованных
аргументов. Является словарем.
def __init__(self, color, model, speed):
self.color = color # цвет
self.model
model # модель
def __new__(cls,
*args,= **kwargs):
- универсальный шаблон для
= speed # скорость
создания методаself.speed
__new__() в классе.
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
>>> {'color': 'Белый', 'model': 'Camry', 'speed': 100}
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
61.
ТеорияМетод __new__()
class Car:
def __new__(cls, *args, **kwargs):
print(f'Работает метод __new__() для класса {cls}')
print(args)
print(kwargs)
# возвращаем новый, неинициализированный объект
return super().__new__(cls)
# инициализатор класса
def __init__(self, color, model, speed):
self.color = color # цвет
self.model = model # модель
self.speed = speed # скорость
# создаем объект класса Car
my_car = Car('Белый', 'Camry', 100)
# создаем объект класса Car с именованными аргументами
my_car = Car(color='Белый', model='Camry', speed=100)
print(my_car)
# выводим адрес объекта в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
62.
ТеорияШаблон проектирования Singleton
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
63.
Задание №1
Реализуйте класс Captain, внутри которого должны быть описаны следующие свойства:
name (строка) – имя
age (целое число) - возраст
height (целое число) - рост (см.)
weight (целое число) - масса (кг.)
Также должны быть реализованы следующие методы:
__init__() – инициализация объекта с начальными значениями свойств
__new__() – создание нового объекта класса
Класс должны быть реализован так, чтобы в программе всегда присутствовал только один
экземпляр класса Captain.
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
64.
65.
class Captain:66.
class Captain:# инициализатор класса
def __init__(self, name, age, height, weight):
67.
class Captain:# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
68.
class Captain:# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
69.
class Captain:# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
70.
class Captain:# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
71.
class Captain:def __new__(cls, *args, **kwargs):
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
72.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
73.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
is – оператор, возвращающий True, если объекты указывают на один и тот же адрес в
оперативной памяти. В противном случае возвращает False.
74.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
75.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
76.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
77.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
78.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
79.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
80.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
>>> <__main__.Captain object at 0x000001AEC878ADD0>
<__main__.Captain object at 0x000001AEC878ADD0>
81.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
# выводим локальные свойства созданных объектов на экран (они совпадают)
print(cap.__dict__)
82.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
# выводим локальные свойства созданных объектов на экран (они совпадают)
print(cap.__dict__)
print(new_cap.__dict__)
83.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
>>> {'name':
'Миша',
'height': 189, 'weight': 82}
self.age
= age 'age': 25,
# возраст
self.height = height
# рост
{'name':
'Миша',
'age':
25,
'height': 189, 'weight': 82}
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
# выводим локальные свойства созданных объектов на экран (они совпадают)
print(cap.__dict__)
print(new_cap.__dict__)
84.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
self.age = age
# возраст
self.height = height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
# выводим локальные свойства созданных объектов на экран (они совпадают)
print(cap.__dict__)
print(new_cap.__dict__)
85.
class Captain:__cap = None
# ссылка на экземпляр класса Captain
# метод __new__(), итоговая версия
def __new__(cls, *args, **kwargs):
if cls.__cap is None: # если объекта класса Captain еще нет в программе
cls.__cap = super().__new__(cls) # создаем объект класса Captain
return cls.__cap
# возвращаем созданный объект
# инициализатор класса
def __init__(self, name, age, height, weight):
self.name = name
# имя
Singleton – шаблон
проектирования,
гарантирующий,
что для указанного класса будет
self.age = age
# возраст
создан только
один экземпляр.
self.height
= height
# рост
self.weight = weight
# масса
# создаем экземпляр класса Captain
cap = Captain(name='Дима', age=26, height=179, weight=75)
# пытаемся создать новый экземпляр класса Captain
new_cap = Captain(name='Миша', age=25, height=189, weight=82)
# выводим адреса созданных объектов на экран (они совпадают)
print(cap)
print(new_cap)
# выводим локальные свойства созданных объектов на экран (они совпадают)
print(cap.__dict__)
print(new_cap.__dict__)
86.
ТеорияМетоды __str__() и __repr__()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
87.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
88.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
def __str__(self):
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
89.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
def __str__(self):
return f'Модель машины - {self.model}'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
90.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
91.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
>>> Модель машины - Camry
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
92.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения
информации
об объекте
в понятном
для пользователя
__str__() – магический
метод,
отображающий
информацию
об экземпляре
классавиде
в
defпользователя
__str__(self):
понятном для
виде. Возвращает строку.
return f'Модель машины - {self.model}'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
>>> Модель машины - Camry
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
93.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}’
def __repr__(self):
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
94.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
95.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
96.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
>>> Модель машины - Camry
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
97.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
print(repr(my_car))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
98.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения
об объекте в понятном для пользователя виде
>>> Модель
машины -информации
Camry
def __str__(self):
Car(Camry)
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
print(repr(my_car))
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
99.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__ (self, model):
self.model = model # модель
# отображения информации об объекте в понятном для пользователя виде
def __str__(self):
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
# выводим информацию об объекте в терминал
print(my_car)
# вызов метода __str__()
print(repr(my_car))
# вызов метода __repr__()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
100.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
__repr__() –# магический
метод,
отображающий
информацию
экземпляре
класса
в
отображения
информации
об объекте
в понятномоб
для
пользователя
виде
понятном для
виде. Возвращает строку, полезен при тестировании и
defразработчика
__str__(self):
отладке программы.
return f'Модель машины - {self.model}'
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
# выводим информацию об объекте в терминал
print(my_car)
# вызов метода __str__()
print(repr(my_car))
# вызов метода __repr__()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
101.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
102.
ТеорияМетоды __str__() и __repr__()
class Car:
# инициализатор класса
def __init__(self, model):
self.model = model # модель
# отображения информации об объекте в понятном для разработчика виде
def __repr__(self):
return f'Car({self.model})'
my_car = Car('Camry') # создаем объект класса Car
print(my_car) # выводим информацию об объекте в терминал
>>> Car(Camry)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
103.
ТеорияМагические методы арифм. операций
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
104.
ТеорияОператор
Магические методы арифм. операций
Магический метод
Расшифровка
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
105.
ТеорияОператор
+
Магические методы арифм. операций
Магический метод
__add__()
Расшифровка
add (сложить)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
106.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
107.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
*
__mul__()
multiply (умножить)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
108.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
*
__mul__()
multiply (умножить)
**
__pow__()
power (степень)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
109.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
*
__mul__()
multiply (умножить)
**
__pow__()
power (степень)
/
__truediv__()
true division (обычное
деление)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
110.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
*
__mul__()
multiply (умножить)
**
__pow__()
power (степень)
/
__truediv__()
true division (обычное
деление)
//
__floordiv__()
floor division
(целочисленное
деление)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
111.
Магические методы арифм. операцийТеория
Оператор
Магический метод
Расшифровка
+
__add__()
add (сложить)
-
__sub__()
subtract (вычесть)
*
__mul__()
multiply (умножить)
**
__pow__()
power (степень)
/
__truediv__()
true division (обычное
деление)
//
__floordiv__()
floor division
(целочисленное
деление)
%
__mod__()
modulo (деление по
модулю)
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
112.
Задание №2
Реализуйте класс MoneyBox, описывающий копилку с деньгами. Внутри которого должны быть
описаны следующие свойства:
__money (целое число) – текущее количество денег в копилке. Значение по умолчанию – 0
Также должны быть реализованы следующие методы:
__init__() – инициализация объекта с начальными значениями свойств
__repr__() – метод для строкового представления объекта, возвращает текущее количество
денег в виде строки
__add__() – метод для увеличения количества денег в копилке на определенное значение
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
113.
class MoneyBox:# инициализатор класса
def __init__():
114.
class MoneyBox:# инициализатор класса
def __init__(self, money):
115.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
116.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
117.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
def __repr__(self):
118.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
def __repr__(self):
return
119.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
def __repr__(self):
return self.__money
120.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return self.__money
121.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
122.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(): # реализация добавления денег в копилку
123.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
124.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
125.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
# создаем объект класса MoneyBox
126.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
box = box + 10
# создаем объект класса MoneyBox
# добавляем деньги в копилку
127.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
box = box + 10
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# выводим на экран текущее количество денег
128.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
box = box + 10
print(box)
>>> 133
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# выводим на экран текущее количество денег
129.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
box += 10
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# выводим на экран текущее количество денег
130.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
box += 10
print(box)
>>> 133
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# выводим на экран текущее количество денег
131.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
#box += 10
box += 10.56
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# выводим на экран текущее количество денег
132.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
#box += 10
box += 10.56
print(box)
>>> 133.56
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# выводим на экран текущее количество денег
133.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
134.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
>>> TypeError: unsupported operand type(s) for +: 'int' and 'str'
135.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
136.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
isinstance() return
– функция,
возвращающая True, если+ объект
MoneyBox(self.__money
other)является экземпляром
указанного класса или классов. В противном случае возвращает False.
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
>>> TypeError: unsupported operand type(s) for +: 'int' and 'str'
137.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение')
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
138.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение')
box = MoneyBox(123)
#box += 10
#box += 10.56
box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
>>> Некорректное сложение
None
139.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение')
box = MoneyBox(123)
box = 10 + box
#box += 10.56
#box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
140.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение')
box = MoneyBox(123)
box = 10 + box
#box += 10.56
#box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
>>> TypeError: unsupported operand type(s) for +: 'int' and 'MoneyBox'
141.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение’)
def __radd__(self, other): # зеркальный метод для __add__()
# вызываем метод __add__() с переставленными операндами
return self.__add__(other)
box = MoneyBox(123)
box = 10 + box
#box += 10.56
#box += '10'
print(box)
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
142.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение’)
def __radd__(self, other): # зеркальный метод для __add__()
# вызываем метод __add__() с переставленными операндами
return self.__add__(other)
box = MoneyBox(123)
box = 10 + box
#box += 10.56
#box += '10'
print(box)
>>> 133
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
143.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
__radd__() – зеркальный
метод для __add__(), позволяющий проводить сложение с
return MoneyBox(self.__money + other)
любым порядком
Зеркальные
методы
и для
других магических
else: операндов.
# если складываем
не с целым
или есть
дробным
числом
методов, реализующих
математические
# выводим
информацию ооперации.
некорректном сложении
print('Некорректное сложение’)
def __radd__(self, other): # зеркальный метод для __add__()
# вызываем метод __add__() с переставленными операндами
return self.__add__(other)
box = MoneyBox(123)
box = 10 + box
#box += 10.56
#box += '10'
print(box)
>>> 133
# создаем объект класса MoneyBox
# добавляем деньги в копилку
# складываем с дробным числом
# складываем объект box со строкой (ошибка)
# выводим на экран текущее количество денег
144.
class MoneyBox:# инициализатор класса
def __init__(self, money=0):
self.__money = money
# текущее количество денег
# возвращает текущее количество денег в виде строки
def __repr__(self):
return f'{self.__money}'
def __add__(self, other): # реализация добавления денег в копилку
# проверка, складываем с целым или дробным числом
if isinstance(other, (int, float)):
# новый объект класса MoneyBox с бОльшим кол-вом денег
return MoneyBox(self.__money + other)
else: # если складываем не с целым или дробным числом
# выводим информацию о некорректном сложении
print('Некорректное сложение')
def __radd__(self, other): # зеркальный метод для __add__()
# вызываем метод __add__() с переставленными операндами
return self.__add__(other)
box = MoneyBox(123)
# создаем объект класса MoneyBox
box = box + 10
# добавляем деньги в копилку
box += 10
# складываем в сокращенной форме
box += 10.56
# складываем с дробным числом
box += '10'
# складываем объект box со строкой (ошибка)
box = 10 + box
# меняем операнды в выражении
print(box)
# выводим на экран текущее количество денег
145.
ИТОГ©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
146.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
147.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
148.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
149.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
150.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
151.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
Методы __str__() и __repr__() должны возвращать строку
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
152.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
Методы __str__() и __repr__() должны возвращать строку
Какой магический метод позволяет реализовать логику сложения внутри
класса?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
153.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
Методы __str__() и __repr__() должны возвращать строку
Какой магический метод позволяет реализовать логику сложения внутри
класса?
Логику сложения позволяет реализовать метод __add__()
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
154.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
Методы __str__() и __repr__() должны возвращать строку
Какой магический метод позволяет реализовать логику сложения внутри
класса?
Логику сложения позволяет реализовать метод __add__()
Для чего нужна функция isinstance()?
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
155.
ИТОГКакой элемент в названии метода указывает на то, что он «магический»?
Магические методы имеют в своем названии по два символа нижнего
подчеркивания слева и справа. Например, __init__().
Для чего нужен магический метод __new__()?
Магический метод __new__() отвечает
неинициализированного экземпляра класса
за
создание
нового,
Какой тип данных возвращают методы __str__() и __repr__()?
Методы __str__() и __repr__() должны возвращать строку
Какой магический метод позволяет реализовать логику сложения внутри
класса?
Логику сложения позволяет реализовать метод __add__()
Для чего нужна функция isinstance()?
Функция isinstance() проверяет, является ли указанный объект
экземпляром указанного класса или классов
©2023 ООО «Юмакс». Все права защищены. Любое использование материалов допускается только с письменного согласия компании
156.
DSПрограммирование
Python
Спасибо за внимание!