Может быть полезно иметь базовый класс, подобный тому, который вы показываете, если экземпляры подклассов могут смешиваться с экземплярами других не производных классов, и вы хотите легко отличить их друг от друга.
class Base: pass # empty base class
class Derived1(Base): pass # normally this would have contents, but it's empty for this example
class Derived2(Base): pass
class OtherClass: pass # not derived from Base
mixed_list = [Derived1(), Derived2(), OtherClass()]
filtered_list = [obj for obj in mixed_list if isinstance(obj, Base)]
Это может быть не так уж и ценно, поскольку не гарантируется, что производные классы имеют какие-либо общие интерфейсы, поэтому filtered_list
может оказаться невозможным для эффективного использования (так как вы не можете вызвать какой-либо общий метод на его значения). Но возможно и, возможно, даже вероятно, что - это какой-то общий интерфейс, просто это не то, что обеспечивается базовым классом (с модулем abc
).