在类中使用Tokenizer .__ init__时有关我的代码的问题

时间:2019-05-17 09:59:09

标签: python

我想更多地了解为什么我们可以使用下面的代码及其作用?

如果可以的话,有人可以向我解释Tokenizer.__init__的工作方式吗?由于我们可以将“ __init__”附加到库中,我们也可以用其他方法来做到这一点吗?如果可以的话,有人可以给我一些例子让我理解,如果可以再做一个简单的例子,将会很高兴。

我的代码:

from tensorflow.python.keras.preprocessing.text import Tokenizer

// we import the tokenizer library

//Then we build a class

class DataWrapper(Tokenizer):
    def __init__(self, num_words):
        Tokenizer.__init__(self, num_words=num_words) // I dont understand how this part work.
self.fit_on_texts(texts)
            self.tokens = self.texts_to_sequences(texts)
            self.reverse_tokens = dict(zip(self.word_index.values(),
                                           self.word_index.keys()))

            if reverse:
                self.tokens = [list(reversed(token)) for token in self.tokens]

            self.num_tokens = [len(token) for token in self.tokens]
            self.max_num = np.mean(self.num_tokens) + 2 * np.std(self.num_tokens)
            self.max_num = int(self.max_num)
            self.sequences_padded = pad_sequences(self.tokens, maxlen=self.max_num,
                                                  padding=padding,


                            truncating=truncating)

1 个答案:

答案 0 :(得分:0)

在python中,可以用两种方式调用所有带有self的函数:obj.method(params)或cls.method(obj,params)。参见以下示例:

class A:
    def foo(self):
        print('foo')

a = A()
# now we can call foo function in two ways:
a.foo()
A.foo(a)

此规则也适用于带有双下划线的功能,例如__init__。就您而言:

Tokenizer.__init__(self, num_words=num_words)

cls = Tokenizer
method = __init__
obj = self  # object of class DataWrapper
params = num_words