<div dir="ltr">Thanks for clarifying.</div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 19, 2016 at 10:34 AM Nick Coghlan <<a href="mailto:ncoghlan@gmail.com">ncoghlan@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 19 July 2016 at 16:41, Neil Girdhar <<a href="mailto:mistersheik@gmail.com" target="_blank">mistersheik@gmail.com</a>> wrote:<br>
> Yes, I see what you're saying.   However, I don't understand why<br>
> __init_subclass__ (defined on some class C) cannot be used to implement the<br>
> checks required by @abstractmethod instead of doing it in ABCMeta.  This<br>
> would prevent metaclass conflicts since you could use @abstractmethod with<br>
> any metaclass or no metaclass at all provided you inherit from C.<br>
<br>
ABCMeta also changes how __isinstance__ and __issubclass__ work and<br>
adds additional methods (like register()), so enabling the use of<br>
@abstractmethod without otherwise making the type an ABC would be very<br>
confusing behaviour that we wouldn't enable by default.<br>
<br>
But yes, this change does make it possible to write a mixin class that<br>
implements the "@abstractmethod instances must all be overridden to<br>
allow instances to to be created" logic from ABCMeta without otherwise<br>
turning the class into an ABC instance.<br>
<br>
Cheers,<br>
Nick.<br>
<br>
--<br>
Nick Coghlan   |   <a href="mailto:ncoghlan@gmail.com" target="_blank">ncoghlan@gmail.com</a>   |   Brisbane, Australia<br>
</blockquote></div>