def main():
    c = Child()
c.method_a()
c.method_b()
c.get_attr()
c.set_attr(200)
Child().get_attr()


class Parent:
    static_attr = 100

def __init__(self):
    print('Calling parent constructor')

def method_a(self):
    print('Calling parent method')

def set_attr(self, value):
    self.__class__.static_attr = value

def get_attr(self):
    print(('Parent attribute:', self.static_attr))


class Child(Parent):

    def __init__(self):
        print('Calling child constructor')
super().__init__()

def method_b(self):
    print('Calling child method')
if __name__ == '__main__':
    main()
order of calling constructors in Python