mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 11:04:25 +01:00
Translate Chicken egg problem example
This commit is contained in:
parent
4576463fcc
commit
446a3a09bb
51
translations/README-ru.md
vendored
51
translations/README-ru.md
vendored
@ -999,3 +999,54 @@ ClosureVars(nonlocals={}, globals={}, builtins={}, unbound=set())
|
|||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
|
### ▶ Проблема курицы и яйца *
|
||||||
|
<!-- Example ID: 60730dc2-0d79-4416-8568-2a63323b3ce8 --->
|
||||||
|
1\.
|
||||||
|
```py
|
||||||
|
>>> isinstance(3, int)
|
||||||
|
True
|
||||||
|
>>> isinstance(type, object)
|
||||||
|
True
|
||||||
|
>>> isinstance(object, type)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
Так какой же базовый класс является "окончательным"? Кстати, это еще не все,
|
||||||
|
|
||||||
|
2\.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> class A: pass
|
||||||
|
>>> isinstance(A, A)
|
||||||
|
False
|
||||||
|
>>> isinstance(type, type)
|
||||||
|
True
|
||||||
|
>>> isinstance(object, object)
|
||||||
|
True
|
||||||
|
```
|
||||||
|
|
||||||
|
3\.
|
||||||
|
|
||||||
|
```py
|
||||||
|
>>> issubclass(int, object)
|
||||||
|
True
|
||||||
|
>>> issubclass(type, object)
|
||||||
|
True
|
||||||
|
>>> issubclass(object, type)
|
||||||
|
False
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
#### 💡 Объяснение
|
||||||
|
|
||||||
|
- `type` - это [метакласс](https://realpython.com/python-metaclasses/) в Python.
|
||||||
|
- **Все** в Python является `объектом`, что включает в себя как классы, так и их объекты (экземпляры).
|
||||||
|
- Класс `type` является метаклассом класса `object`, и каждый класс (включая `type`) наследуется прямо или косвенно от `object`.
|
||||||
|
- У `object` и `type` нет реального базового класса. Путаница в приведенных выше фрагментах возникает потому, что мы думаем об этих отношениях (`issubclass` и `isinstance`) в терминах классов Python. Отношения между `object` и `type` не могут быть воспроизведены в чистом Python. Точнее говоря, следующие отношения не могут быть воспроизведены в чистом Python,
|
||||||
|
+ класс A является экземпляром класса B, а класс B является экземпляром класса A.
|
||||||
|
+ класс A является экземпляром самого себя.
|
||||||
|
- Эти отношения между `object` и `type` (оба являются экземплярами друг друга, а также самих себя) существуют в Python из-за "обмана" на уровне реализации.
|
||||||
|
|
||||||
|
---
|
||||||
|
Loading…
Reference in New Issue
Block a user