代码之家  ›  专栏  ›  技术社区  ›  DavalliTV

如何将变量从文件A传递到文件B中类的函数

  •  -1
  • DavalliTV  · 技术社区  · 6 年前

    我已经阅读了很多关于课程和实例的文章和网站。但没有人能给我一个明确的答案。如何将变量从一个文件传递到另一个文件中嵌套在类中的函数?

    在我的数据库文件中,我已经从一个给定的行中获得了各个值。我需要把这些变量传递给主文件中的一个函数,它位于一个类中。


    当运行下面的代码时,我得到以下错误: TypeError: PrintData() missing 1 required positional argument: 'DOB'

    def DisplayStudent(self):
        txtStudent = self.txtStudent.get()
        DisplayResults(txtStudent)
    
    def PrintData(self, First, Last, Year, Tutor, DOB):
        print(First, Last, Year, Tutor, DOB)
    
        self.resultStudentFName.config(text = First)
    

    当运行下面的代码时,我得到一个不同的错误: NameError: name 'self' is not defined

    def DisplayStudent(self):
        txtStudent = self.txtStudent.get()
        DisplayResults(txtStudent)
    
    def PrintData(First, Last, Year, Tutor, DOB):
        print(First, Last, Year, Tutor, DOB)
    
        self.resultStudentFName.config(text = First)
    

    注: 这一行代码用于没有类的数据库文件。上面两段代码中的任何一段都没有更改。

    from Main import MainPage as MP
    MP.PrintData(First, Last, Year, Tutor, DOB)
    

    当我经过的时候 self 作为 PrintData 线,上面写着 名称错误:未定义名称“self” .


    我们非常感谢您提供有关此代码的任何帮助,以及与使用类、函数、模块和在文件之间传递变量有关的任何文档。

    多谢, 达瓦利夫

    2 回复  |  直到 6 年前
        1
  •  0
  •   PydPiper    6 年前

    从外观上看,您的顶级snipit可以工作,但您只需要在拉入类时初始化它: from Main import MainPage as MP newMP = MP() # or pass in __init__ args as needed newMP.PrintData(First, Last, Year, Tutor, DOB) # assuming these args have been previously defined 底部snipit不工作,因为它是一个staticmethod,参数列表中没有“self”(因此不能扩展self)。方法内)

        2
  •  0
  •   DavalliTV    6 年前

    我发现了这个问题!我没有经过 self . 这样一个小问题/错误会造成这么多的挫折!对于那些以后看这篇文章的人,请确保仔细阅读错误内容,并确保在使用类时, 自己 是通过的。感谢安德鲁和派德皮尔的努力,我本可以更好地回答这个问题,但我很感谢你们的努力!