He didn't mention the worst pattern, the visitor pattern, which has extremely few use cases.

The value of the visitor pattern is that it lets you emulate tagged unions in languages that don't have them (e.g., Java 16 and earlier). Of course, Python has no need of this because you can check the type of anything at runtime and the optional type annotations also support union types.

There is, however, a certain elegance to multiple dispatch, which Python doesn't natively support. Visitors are indeed a common approach to emulating it. Doing the runtime checks is external rather than internal polymorphism; there are reasons for either, and aesthetics count.