mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 02:54:25 +01:00
Translate Class attributes and instance atributes example
This commit is contained in:
parent
a0069d842e
commit
972d1334fb
71
translations/README-ru.md
vendored
71
translations/README-ru.md
vendored
@ -1440,3 +1440,74 @@ I have lost faith in truth!
|
||||
* Python 3 был несовместим с предыдущими версиями, эту проблему наконец-то исправили, и поэтому последний фрагмент не будет работать с Python 3.x!
|
||||
|
||||
---
|
||||
|
||||
|
||||
### ▶ Атрибуты класса и экземпляра
|
||||
<!-- Example ID: 6f332208-33bd-482d-8106-42863b739ed9 --->
|
||||
1\.
|
||||
```py
|
||||
class A:
|
||||
x = 1
|
||||
|
||||
class B(A):
|
||||
pass
|
||||
|
||||
class C(A):
|
||||
pass
|
||||
```
|
||||
|
||||
**Результат:**
|
||||
```py
|
||||
>>> A.x, B.x, C.x
|
||||
(1, 1, 1)
|
||||
>>> B.x = 2
|
||||
>>> A.x, B.x, C.x
|
||||
(1, 2, 1)
|
||||
>>> A.x = 3
|
||||
>>> A.x, B.x, C.x # Значение C.x изменилось , но B.x - нет
|
||||
(3, 2, 3)
|
||||
>>> a = A()
|
||||
>>> a.x, A.x
|
||||
(3, 3)
|
||||
>>> a.x += 1
|
||||
>>> a.x, A.x
|
||||
(4, 3)
|
||||
```
|
||||
|
||||
2\.
|
||||
```py
|
||||
class SomeClass:
|
||||
some_var = 15
|
||||
some_list = [5]
|
||||
another_list = [5]
|
||||
def __init__(self, x):
|
||||
self.some_var = x + 1
|
||||
self.some_list = self.some_list + [x]
|
||||
self.another_list += [x]
|
||||
```
|
||||
|
||||
**Результат:**
|
||||
|
||||
```py
|
||||
>>> some_obj = SomeClass(420)
|
||||
>>> some_obj.some_list
|
||||
[5, 420]
|
||||
>>> some_obj.another_list
|
||||
[5, 420]
|
||||
>>> another_obj = SomeClass(111)
|
||||
>>> another_obj.some_list
|
||||
[5, 111]
|
||||
>>> another_obj.another_list
|
||||
[5, 420, 111]
|
||||
>>> another_obj.another_list is SomeClass.another_list
|
||||
True
|
||||
>>> another_obj.another_list is some_obj.another_list
|
||||
True
|
||||
```
|
||||
|
||||
#### 💡 Объяснение:
|
||||
|
||||
* Переменные класса и переменные экземпляров класса внутренне обрабатываются как словари объекта класса. Если имя переменной не найдено в словаре текущего класса, оно ищется в родительских классах.
|
||||
* Оператор += изменяет объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры и атрибут класса также.
|
||||
|
||||
---
|
||||
|
Loading…
Reference in New Issue
Block a user