Question

Consider the following class in Python 3:

class Foo(AnotherClass):
    id_counter = 0
    def __init__(self):
        super().__init__()
        self.id = Foo.id_counter
        Foo.id_counter += 1

Is there a keyword (similar to Python's super in this case) that can be used to access class variables in place of putting the class name Foo?

Was it helpful?

Solution

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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top