type(self)
or self.__class__
will return the actual class of self
, which might be a subclass of Foo
or Foo
:
class Foo(AnotherClass):
id_counter = 0
def __init__(self):
super().__init__()
self.id = type(self).id_counter
type(self).id_counter += 1