Подтвердить что ты не робот

В python super() всегда вызывается первым в методе. Существуют ли ситуации, когда их следует называть позже?

Есть ли ситуации, когда вы хотите выполнить некоторую обработку, прежде чем вы вызовете super()?

Это надуманный пример. Есть ли лучшие примеры? Это считается pythonic?

class Base(object):
    def __init__(self, name):
        print "Base %s created" % name
        self._name = name

class UpperBase(A):
    """ Similar to base but the name is in uppercase. """
    def __init__(self, name):
        name = name.upper() 
        super(UpperBase, self).__init__(name)
4b9b3361

Ответ 1

Иногда вам нужно проверить аргументы перед вызовом super():

class UpperBase(Base):
    def __init__(self, name):
        if not name_valid(name):
            raise ValueError()
        super(UpperBase, self).__init__(name)

Я не понимаю, почему это не будет питоном, потому что это самый простой способ сделать это, и это просто. Кроме того, прочитайте комментарий @JHSaunders, он делает хорошую оценку.