# Calling abstract methods

**URL:** <https://discuss.python.org/t/calling-abstract-methods/42576>\
**Category:** Typing\
**Created:** [January 6, 2024, 3:22am UTC](https://discuss.python.org/t/calling-abstract-methods/42576 "2024-01-06T03:22:37Z")\
**Posts on this page:** 1\
**Showing post:** 9

<div class="post-metadata">

**Author:** ![guido](https://sea2.discourse-cdn.com/flex002/user_avatar/discuss.python.org/guido/32/21_2.png) [@guido](https://discuss.python.org/u/guido)\
**Post date:** [January 6, 2024, 4:25pm UTC](https://discuss.python.org/t/calling-abstract-methods/42576/9 "2024-01-06T16:25:51Z")

</div>

> [@MegaIng](#):
>
> No, that Case 2 example shouldn’t be an error. If the programmer wants that to be an error, they can put `raise NotImplementedError` in the `ABC`’s implementation. I have heard of examples where Base Classes are the base class of a complex inheritances hierarchy and each subclass should call to `super().method` to make sure their sibling classes can do the correct work, although I don’t have any real examples of that.

Hm, that is indeed a well-known pattern for multiple inheritance, but I would argue that the base class method should not be declared abstract, since it is clearly expected to be called.

I am surprised that mypy makes a distinction between an abstract superclass method returning `None` or `object` and one returning something else. I suspect this is the result of a careful compromise based on observation of a large production code base. (It’s unlikely to be needed by typeshed, otherwise I’d put that in as well.) Unfortunately it appears that the active mypy developers have chosen to ignore this forum.

PS: I seem to be behind the times. I didn’t realize there was a difference between `...` and `pass` as the body of a “trivial” function/method.

---

_[View the full topic](https://discuss.python.org/t/calling-abstract-methods/42576)._
