Str() подкласса dict не возвращает "{}" для MROPython

Программы на Python
Anonymous
Str() подкласса dict не возвращает "{}" для MRO

Сообщение Anonymous »

Если класс наследует от dict, почему str() не использует dict.__str__, если dict находится раньше в MRO класса?
Python 3.10.12 (main, Sep 11 2024, 15:47:36) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> class A:
... def __str__(self):
... return "A"
...
>>> class B(dict, A):
... pass
...
>>> B.__mro__
(, , , )
>>> str(B())
'A'
>>> str(dict())
'{}'
>>>

Почему при вызове str(B()) не вызывается dict.__str__, а не A.__str__ ?
Это как-то связано с тем, что dict имеет slot_wrapper вместо функции?
>>> dict.__str__

>>> A.__str__

>>> B.__str__



Подробнее здесь: https://stackoverflow.com/questions/790 ... er-the-mro

Вернуться в «Python»