40

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)
4

1 に答える 1

50

を呼び出す前に、引数を検証する必要がある場合がありますsuper()

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

これが最も簡単な方法であり、簡単なので、なぜこれがpythonicではないのかわかりません。また、@JHSaunders のコメントを読んでください。彼は良い点を指摘しています。

于 2011-04-12T11:15:24.287 に答える