Skip to content

Commit 938dae2

Browse files
authored
Update README.md
1 parent 5709793 commit 938dae2

File tree

1 file changed

+128
-1
lines changed

1 file changed

+128
-1
lines changed

README.md

Lines changed: 128 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,131 @@
1-
# Python--Object-Oriented-Programming
1+
# Python ОПП (Object Oriented Programming)
2+
общие свойства объектов в языке программирования.
3+
4+
ООП строится вокруг четырёх основных принципов: абстракция, инкапсуляция, наследование и полиморфизм.
5+
- **Инкапсуляция**
6+
Доступ к данным объекта должен контролироваться, чтобы пользователь не мог изменить их в произвольном порядке и что-то поломать. Поэтому для работы с данными программисты пишут методы, которые можно будет использовать вне класса и которые ничего не сломают внутри.
7+
- **Наследование**
8+
Классы могут передавать свои атрибуты и методы классам-потомкам.
9+
- **Полиморфизм**
10+
Этот принцип позволяет применять одни и те же команды к объектам разных классов, даже если они выполняются по-разному.
11+
- **Абстракция**
12+
При создании класса мы упрощаем его до тех атрибутов и методов, которые нужны именно в этом коде, не пытаясь описать его целиком и отбрасывая всё второстепенное.
13+
____
14+
15+
**Class
16+
-данные(свойства)
17+
> prop = ‘value’
18+
- методы(действия)
19+
> def get_prop(self, x, y):
20+
> self.x = x
21+
> self.y = y
22+
>
23+
24+
**Добавить св-во
25+
> Сlass.prop = ‘value’
26+
> setattr(Class, ‘prop’, ‘value’)
27+
28+
**Читать св-во
29+
> c = Сlass.prop - если нет св-ва, возвращает ошибку
30+
> getattr(Class, prop, False) - если нет св-ва, возвращает третий аргумент
31+
32+
**Наличие св-ва
33+
> hasattr(Class, prop) - учитывает наследование
34+
35+
**Удалить св-во
36+
> del Сlass.prop - если нет св-ва, возвращает ошибку
37+
> delattr(Class, prop) - если нет св-ва, возвращает ошибку
38+
39+
**Пространство имен
40+
> Class.__dict__
41+
42+
**Все свойства экз.класса
43+
> dir(obj)
44+
45+
**Описание класса, комментарий
46+
> Class.__doc__
47+
48+
**Метод класса**
49+
> @classmethod - работает с атрибутами класса
50+
> def method_a(cls, arg):
51+
> return cls.x
52+
>
53+
54+
**Статический метод**
55+
> @staticmethod - независимая, сервисная функция; нет дополнительных параментров, кроме тех, которые указываем; не имеют доступа к атрибутам класса и к атрибутам экз.класса; можем вызыват внутри обычных методов
56+
> def method_b(x, y):
57+
> return x*x + y*y
58+
>
59+
60+
**Режим доступа (механизм инкапсуляции)
61+
> attr - публичное свойство
62+
> _attr - режим доступа protected
63+
> __attr - режим доступа private
64+
65+
> pip install accessify - защитить методы от внешнего доступа
66+
____
67+
68+
**Магические методы - методы, которые вызываются интерпретатором для выполнения различных операций над объектами.
69+
70+
| Метод | Что делает |
71+
|----------------:|----------------:|
72+
| __new__(cls)
73+
return super().__new__(cls) | Создание объекта cls ссылается на текущий класс должен возвращать адрес нового созданного объекта |
74+
| __init__(self) | Инициализатор объекта |
75+
| __del__(self) | Финализатор объекта |
76+
| __setattr__(self, key, value) | Автоматически вызывается при изменении свойства key класса |
77+
| __getattribute__(self, item) | Автоматически вызывается при получении свойства класса с именем item |
78+
| __getattr__(self, item) | Автоматически вызывается при получении несуществующего свойства item класса |
79+
| __delattr__(self, item) | Автоматически вызывается при удалении свойства item (не важно существует оно или нет) |
80+
| __сall__(self, *args, **kwargs) | Позволяет экземплярам класса вести себя так, как будто они функции |
81+
| __str__(self) | Для отображения информации об объекте класса для пользователей |
82+
| __repr__(self) | Для отображения информации об объекте класса в режиме отладки |
83+
| __len__(self) | Позволяет применить функцию len() к экземпляру класса |
84+
| __abs__(self) | Позволяет применить функцию abs() к экземпляру класса |
85+
| __add__(self) | Для операции сложения |
86+
| __sub__(self) | Для операции вычитания |
87+
| __mul__(self) | Для операции умножения |
88+
| __truediv__(self) | Для операции деления |
89+
| __eq__(self) | Для равенства == |
90+
| __ne__(self) | Для неравенства != |
91+
| __lt__(self) | Для оператора < |
92+
| __le__(self) | Для оператора <= |
93+
| __gt__(self) | Для оператора > |
94+
| __ge__(self) | Для оператора >= |
95+
| __hash__(self) | Вычисляется хэш экземпляра класса |
96+
| __bool__(self) | Используется в программах, где требуется описать собственные проверки истинности или ложности объектов |
97+
| __getitem__(self, item) | Получение значения по ключу item |
98+
| __setitem__(self, key, value) | Запись значения value по ключу key |
99+
| __delitem__(self, key) | Удаление элемента по ключу key |
100+
| __iter__(self) | Получение итератора для перебора объекта |
101+
| __next__(self) | Переход к следующему значению и его считывание |
102+
103+
____
104+
105+
**Oбъект-свойство property
106+
| объект-свойство property
107+
1. prop = property (getter, setter)
108+
109+
2. @property
110+
def name(self):
111+
return self.__name
112+
113+
@name.setter
114+
def name(self, name):
115+
self.__name = name
116+
117+
@name.deleter
118+
def name(self):
119+
del self.__name | Для работы с приватными локальными свойствами экземпляров классов |
120+
| коллекция __slots__
121+
__slots__ = (’x’, ‘y’) | Ограничивает допустимый набор имен атрибутов объекта только перечисленными именами
122+
- ограничение создаваемых локальных свойств
123+
- уменьшение занимаемой памяти, атрибут __dict__ удаляется
124+
- ускорение работы с локальными свойствами |
125+
____
126+
127+
**Метакласс:
128+
![]()
2129

3130

4131
[ОOП Python :point_left:](https://github.com/Dv-nn/Python--Object-Oriented-Programming/blob/main/ОOП_Python.pdf)

0 commit comments

Comments
 (0)