mirror of
https://github.com/satwikkansal/wtfpython
synced 2024-11-22 02:54: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