Я собираюсь взять дикую догадку на то, что вы просите.
Вы хотите знать, почему последняя строка выводит None
вместо "Word"
.
Во-первых, что делает repr(ns)
? Loosely: он вызывает 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
в качестве ключевого слова аргумента, независимо от того, что вы получите.
Если вы хотите, чтобы передать все аргументы, или пройти по конкретным жестко закодированных значений, или некоторой комбинации из двух, или генерировать случайные значения, или любой другой, вы можете сделать любое из этого, но вы должны фактически написать его, как и любой другой вызов функции. Например, может быть, вы хотели этого:
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)
... или это ...
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)
так, как вы уже сделали ниже. Это создает родительский класс и дочерний класс, форвардные аргументы конструктора и т. Д., Все правильно. Итак ... каков ваш вопрос? – abarnert
название и тело вопроса относятся к двум различным вещам, хотя оба они связаны с подклассификацией и наследованием. –
Все выглядит нормально. Единственная странная вещь: 'pass' – oleg