For question 2, you need to call super in each class:
class First(object):
def __init__(self):
super(First, self).__init__()
print "first"
class Second(object):
def __init__(self):
super(Second, self).__init__()
print "second"
class Third(First, Second):
def __init__(self):
super(Third, self).__init__()
print "that's it"
For question 3, that can’t be done, your method needs to have the same signature. But you could just ignore some parameters in the parent clases or use keywords arguments.