# Make abc.ABC a regular class by making \_\_instancecheck\_\_ and \_\_subclasscheck\_\_ class methods

**URL:** <https://discuss.python.org/t/make-abc-abc-a-regular-class-by-making-instancecheck-and-subclasscheck-class-methods/47547>\
**Category:** Ideas\
**Created:** [March 4, 2024, 9:29am UTC](https://discuss.python.org/t/make-abc-abc-a-regular-class-by-making-instancecheck-and-subclasscheck-class-methods/47547 "2024-03-04T09:29:02Z")\
**Posts on this page:** 1\
**Showing post:** 48

<div class="post-metadata">

**Author:** ![chepner](https://avatars.discourse-cdn.com/v4/letter/c/22d042/32.png) [@chepner](https://discuss.python.org/u/chepner)\
**Post date:** [March 5, 2024, 3:19pm UTC](https://discuss.python.org/t/make-abc-abc-a-regular-class-by-making-instancecheck-and-subclasscheck-class-methods/47547/48 "2024-03-05T15:19:30Z")

</div>

> [@MegaIng](#):
>
> So you are suggesting moving ` __instancecheck__ ` from the metaclass to the class? If so, go back to the beginning of the thread and read the counter arguments there.

I think I was anticipating that the necessary distinction between “subclass of abstract base class” and “subclass of `ABC`” could be handled by the definition of ` __subclasscheck__ `, and `ABCMeta` was defined because it was the _simpler_ option. But if the distinction is truly impossible (or at least undesirably messy), then yes, I would argue for moving the machinery into `type` itself.

---

_[View the full topic](https://discuss.python.org/t/make-abc-abc-a-regular-class-by-making-instancecheck-and-subclasscheck-class-methods/47547)._
