-3

以下のような親子継承を作成するにはどうすればよいですか....

class Synset(object):

    def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
        self.synset_id = synset_id
        self.w_num = w_num
        self.word = word
        self.ss_type = ss_type
        self.sense_number = sense_number
        self.tag_count = tag_count
    def __repr__(self):
        return repr((self.word))

class NounSynset(Synset):

    def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
        super(NounSynset, self).__init__(synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None)
        pass

ns = NounSynset(None, None, "Word")
print ns
4

1 に答える 1

5

私はあなたが何を求めているかについて大げさな推測をするつもりです。

Noneの代わりに最後の行が出力される理由を知りたいです"Word"

まず、何をしrepr(ns)ますか?大まかに: を呼び出しますNounSynset.__repr__(ns)。これはSynset.__repr__(ns)(子クラスでオーバーライドしないため) だけで、 を返しますrepr((self.word))。そこにある余分な括弧は何もしませんが、コードを読みにくくするので、repr(self.word).

現在、self.wordは であることが保証されていますNone。なんで?passコンストラクターがどのように機能するかを見てください (コードを少し読みにくくする以外に何も追加しない を無視します)。

class NounSynset(Synset):

    def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
        super(NounSynset, self).__init__(synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None)

word=None何を取得しても、キーワード引数として明示的に渡しています。


すべての引数を転送したり、特定のハードコードされた値、または 2 つの組み合わせを渡したり、ランダムな値を生成したりしたい場合は、それらのいずれかを行うことができますが、実際にそれを記述する必要があります。他の関数呼び出しと同様です。たとえば、これが必要な場合があります。

    def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
        super(NounSynset, self).__init__(synset_id=synset_id, w_num=w_num, word=word, ss_type=ss_type, sense_number=sense_number, tag_count=tag_count)

…またはこれ…</p>

    def __init__(self, synset_id=None, w_num=None, word=None, ss_type=None, sense_number=None, tag_count=None):
        super(NounSynset, self).__init__(synset_id=synset_id, w_num=w_num, word=word, ss_type=ss_type if ss_type else NOUN_TYPE, sense_number=sense_number, tag_count=tag_count)
于 2013-09-20T20:41:47.503 に答える