如何将变量传递给python中的Class,然后将这些变量用于其他称为class / objects的类中?

时间:2019-05-04 01:03:49

标签: python oop

我有一个名为createEmbeds的类,我想将变量pretrained_pa​​th,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

0 个答案:

没有答案