Разъясните нюанс в наследовании класов в Python?
connects — аттрибут класса Component, не инстанса. Наследующие классы используют ЭТОТ же адрес памяти (id(c1.connects) == id(c2.connects))
Хотите чтоб было разное — добавьте к описанию Component1 и Component2 тоже connects = [], как вы сделали это для базового класса.
а вы уверены, что вам надо коннектить именно к классу, а не к объекту?

тогда правильнее сделать это как @classmethod а не метод объекта.
а чтобы не копировать строчку, атрибут можно создавать в мета-классе:

class MetaComp(type):
  def __init__(cls,name,bases,kwargs):
    super(MetaComp, cls).__init__(name,bases,kwargs)
    cls.connects = [] # для каждого класса и наследника будеит свой

class Comp(object):
  __metaclass__ = MetaComp

  @classmethod
  def connect(cls,obj):
    cls.connects.append(obj)

class Comp1(Comp):
  pass
    
class Comp2(Comp):
  pass

# каждый вызов добавляет к своему connects:
Comp.connect('foo')
Comp1.connect('foo1')
Comp2.connect('foo2')
