Может ли подкласс класса Python иметь аргументы, отличные от базового класса? - PullRequest
0 голосов
/ 23 июня 2019

Я использую Python 3.6.7, и у меня есть:

class CodeModel:
    def tokenize(self, lexer, save_tokens=None):
        tokens = np.array([], dtype='object')
        line_count = 0

Тогда у меня есть:

class JSCode(CodeModel):
    def tokenize(self, **kwargs):
        lexer = JavascriptLexer()
        super().tokenize(lexer, **kwargs)

В пределах CodeModel у меня есть:

self.tokenize(save_tokens='stuff')

Я хочу, чтобы он затем вызвал tokenize из JSCode, который не нуждается в save_tokens, и передал это базовому классу, CodeModel. tokenize.

Однако то, как я это делаю, похоже, не работает. Я получаю ошибку:

    self.tokenize(save_tokens=save_tokens)
TypeError: tokenize() got an unexpected keyword argument 'save_tokens'

Что я делаю не так?

1 Ответ

1 голос
/ 25 июня 2019

Если type(self) равно CodeModel, но вы знаете, что хотите позвонить на JSCode.tokenize, вы можете сделать это с помощью JSCode.tokenize(self)

Я не могу придумать веских причин, почему тогда self должно быть типа CodeModel. Если коду не требуются какие-либо другие функции JSCode, зачем так или иначе иметь этот класс. Просто есть метод в пространстве имен модуля

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...