Как передать переменные в класс в python, а затем использовать эти переменные в других называемых классах / объектах? - PullRequest
0 голосов
/ 04 мая 2019

У меня есть класс createEmbeds, и я хочу передать ему переменные pretrained_path, ffn_weight_file, bert_ffn_weight_file и embedding_file.

Затем я хочу, чтобы эти переменные передавались при создании новых объектов в этом классе.Я импортировал другие классы, и теперь я хочу создать их экземпляры, передав переменные.

Затем я хочу передать эти объекты другому объекту.

Вот моя попытка

from Scripts.predictor_functions import QAEmbed, FaissTopK, RetreiveQADoc

class createEmbeds:
    def __init__(self, pretrained_path = None, ffn_weight_file = None, \
        bert_ffn_weight_file = 'models/bertffn_crossentropy/bertffn',  embedding_file = 'qa_embeddings/bertffn_crossentropy.csv'):
            self.pretrained_path = pretrained_path
            self.ffn_weight_file = ffn_weight_file
            self.bert_ffn_weight_file = bert_ffn_weight_file
            self.embedding_file = embedding_file

    def get_qa_embed(self):
        qa_embed = QAEmbed(
            pretrained_path=self.pretrained_path,
            ffn_weight_file=self.ffn_weight_file,
            bert_ffn_weight_file=self.bert_ffn_weight_file
        )
        return qa_embed

    def get_faiss_topk(self):
        faiss_topk = FaissTopK(self.embedding_file)
        return faiss_topk

    doc = RetreiveQADoc(get_qa_embed(self), get_faiss_topk(self))

Я получаю

NameError: name 'self' is not defined

Ошибка

Полная ошибка

1 frames
/usr/local/lib/python3.6/dist-packages/Scripts/inference_question_to_topk_functions2.py in createEmbeds()
     26         return faiss_topk
     27 
---> 28     doc = RetreiveQADoc(get_qa_embed(self), get_faiss_topk(self))
     29 
     30 #     print(doc.predict('i have a headache.',

NameError: name 'self' is not defined
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...