Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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)

AltStyle によって変換されたページ (->オリジナル) /