|
12 | 12 | При создании класса мы упрощаем его до тех атрибутов и методов, которые нужны именно в этом коде, не пытаясь описать его целиком и отбрасывая всё второстепенное.
|
13 | 13 | ____
|
14 | 14 |
|
15 |
| -**Class |
| 15 | +**Class** |
16 | 16 | -данные(свойства)
|
17 | 17 | > prop = ‘value’
|
18 | 18 | - методы(действия)
|
|
21 | 21 | > self.y = y
|
22 | 22 | >
|
23 | 23 |
|
24 |
| -**Добавить св-во |
| 24 | +**Добавить св-во** |
25 | 25 | > Сlass.prop = ‘value’
|
26 | 26 | > setattr(Class, ‘prop’, ‘value’)
|
27 | 27 |
|
28 |
| -**Читать св-во |
| 28 | +**Читать св-во** |
29 | 29 | > c = Сlass.prop - если нет св-ва, возвращает ошибку
|
30 | 30 | > getattr(Class, prop, False) - если нет св-ва, возвращает третий аргумент
|
31 | 31 |
|
32 |
| -**Наличие св-ва |
| 32 | +**Наличие св-ва** |
33 | 33 | > hasattr(Class, prop) - учитывает наследование
|
34 | 34 |
|
35 | 35 | **Удалить св-во
|
36 | 36 | > del Сlass.prop - если нет св-ва, возвращает ошибку
|
37 | 37 | > delattr(Class, prop) - если нет св-ва, возвращает ошибку
|
38 | 38 |
|
39 |
| -**Пространство имен |
| 39 | +**Пространство имен** |
40 | 40 | > Class.__dict__
|
41 | 41 |
|
42 |
| -**Все свойства экз.класса |
| 42 | +**Все свойства экз.класса** |
43 | 43 | > dir(obj)
|
44 | 44 |
|
45 |
| -**Описание класса, комментарий |
| 45 | +**Описание класса, комментарий** |
46 | 46 | > Class.__doc__
|
47 | 47 |
|
48 | 48 | **Метод класса**
|
|
57 | 57 | > return x*x + y*y
|
58 | 58 | >
|
59 | 59 |
|
60 |
| -**Режим доступа (механизм инкапсуляции) |
| 60 | +**Режим доступа (механизм инкапсуляции)** |
61 | 61 | > attr - публичное свойство
|
62 | 62 | > _attr - режим доступа protected
|
63 | 63 | > __attr - режим доступа private
|
64 | 64 |
|
65 | 65 | > pip install accessify - защитить методы от внешнего доступа
|
66 | 66 | ____
|
67 | 67 |
|
68 |
| -**Магические методы - методы, которые вызываются интерпретатором для выполнения различных операций над объектами. |
| 68 | +**Магические методы** - методы, которые вызываются интерпретатором для выполнения различных операций над объектами. |
69 | 69 |
|
70 | 70 | | Метод | Что делает |
|
71 | 71 | |----------------:|----------------:|
|
72 |
| -| __new__(cls) |
73 |
| - return super().__new__(cls) | Создание объекта cls ссылается на текущий класс должен возвращать адрес нового созданного объекта | |
| 72 | +| __new__(cls) return super().__new__(cls) | Создание объекта cls ссылается на текущий класс должен возвращать адрес нового созданного объекта | |
74 | 73 | | __init__(self) | Инициализатор объекта |
|
75 | 74 | | __del__(self) | Финализатор объекта |
|
76 | 75 | | __setattr__(self, key, value) | Автоматически вызывается при изменении свойства key класса |
|
@@ -102,31 +101,44 @@ ____
|
102 | 101 |
|
103 | 102 | ____
|
104 | 103 |
|
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 |
| -- ускорение работы с локальными свойствами | |
| 104 | +**Oбъект-свойство property** |
| 105 | +> объект-свойство property |
| 106 | +> 1. prop = property (getter, setter) |
| 107 | +> |
| 108 | +> 2. @property |
| 109 | +> def name(self): |
| 110 | +> return self.__name |
| 111 | +> |
| 112 | +> @name.setter |
| 113 | +> def name(self, name): |
| 114 | +> self.__name = name |
| 115 | +> |
| 116 | +> @name.deleter |
| 117 | +> def name(self): |
| 118 | +> del self.__name | Для работы с приватными локальными свойствами экземпляров классов |
| 119 | + |
| 120 | +> коллекция __slots__ |
| 121 | +> __slots__ = (’x’, ‘y’) | Ограничивает допустимый набор имен атрибутов объекта только перечисленными именами |
| 122 | +> - ограничение создаваемых локальных свойств |
| 123 | +> - уменьшение занимаемой памяти, атрибут __dict__ удаляется |
| 124 | +> - ускорение работы с локальными свойствами |
125 | 125 | ____
|
126 | 126 |
|
127 |
| -**Метакласс: |
128 |
| -![]() |
| 127 | +**Метакласс:** |
| 128 | + |
| 129 | + |
| 130 | + |
| 131 | +**Dataclass:** |
| 132 | + |
| 133 | + |
| 134 | + |
| 135 | +**Дескриптор:** |
| 136 | + |
129 | 137 |
|
| 138 | +____ |
| 139 | + |
| 140 | + |
| 141 | +____ |
130 | 142 |
|
131 | 143 | [ОOП Python :point_left:](https://github.com/Dv-nn/Python--Object-Oriented-Programming/blob/main/ОOП_Python.pdf)
|
132 | 144 |
|
0 commit comments