On Sun, May 05, 2019 at 04:23:58AM +0300, Serge Matveenko wrote: > Hi, all! > > I believe, almost everybody is familiar with the `abc` package. > > The problem is that the ABC class is not a separate thing from > `object`. So, using ABCs often results in complicated inheritance > designs and even in the infamous metaclass conflict. [...] > So, I would like to propose adding a third main object called > `interface` in addition to `object` and `type` and to use it to define > interface objects. Such interfaces could then be used in the class > definition in the following way.
How will that solve the problem? Your `interface` object will still inherit from both object and type since everything inherits from object and all types inherit from type. > Another problem is that ABC performs checks at the moment an object is > being instantiated which isn't exactly the way one expects an > interface to work. Isn't it? That's how I expect it to work in Python, and I haven't had any problems with it so far. That's not to say there aren't problems, but you should explain what they are rather than assume that others have experienced the same issues you have. Why is the late check a problem? Are you worried about performance? It isn't that I *oppose* moving the checks to class-creation time instead of instantiation time, but I'd like to hear more about why it is a problem. > The obvious way would be to enforce the > implementation at the moment `type` for that class is created, i.e. on > module execution time. Module execution time is not necessarily when the class is created, if it matters. -- Steven _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/