STINNER Victor added the comment:
Serhiy on the PR: "This is overgeneralization. Can tp_dict be not exact dict at
all? I don't think this is possible. In many places concrete dict API is used
with tp_dict. If you want to allow tp_dict be not exact dict, please open a
separate issue for this."
Using the following code, A.__dict__ type is dict even if the metaclass creates
a different type, probably because type_new() calls PyDict_Copy(orig_dict):
---
class mydict(dict):
def __setitem__(self, name, value):
if name == "__module__":
value = "<mock module>"
super().__setitem__(name, value)
class MetaClass(type):
@classmethod
def __prepare__(mcl, name, bases):
return mydict()
class A(metaclass=MetaClass):
pass
print(A.__module__)
---
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue31336>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com