【问题标题】:Carry a variable across two files in different classes在不同类的两个文件中携带一个变量
【发布时间】:2011-07-23 06:43:04
【问题描述】:

我想在一个人登录后将变量用户携带到另一个文件中,该文件将填充或携带该用户变量,以便我可以在 SQL 语句中使用它。

    def ViewScore(self, event):
    root = Tk()
    root.title("You last 5 attempts for this topic")
    user = user_management.getuser()
    app = UserScore(root)
    root.mainloop()

变量 user 工作,我使用打印语句对其进行了测试,但是我需要将它转移到 UserScore.py 文件并运行 SQL 语句。

sql = 'SELECT * FROM scores where username="%s" and topic="binary" order by ID DESC' % (user)

sql 语句中的用户变量似乎永远不会被填充或创建,我只是不知道该怎么做。

UserScore.py

class UserScore(Frame):

   def __init__(self,master):
    Frame.__init__(self,master)
    self.pack()
    self.getRecords()


   def getRecords(self):

【问题讨论】:

    标签: python class methods static global


    【解决方案1】:

    我猜测设置 sql 的函数是某种 GUI 回调,而不是您直接使用参数调用的函数。您是否尝试过调用UserScore.py 中设置全局变量的函数,然后让设置sql 的函数访问该全局变量?

    可能不是最 Pythonic 的方式 - 可能应该使用类实例来实现 - 但它应该可以工作并且很简单。

    编辑:澄清:

    在可以访问用户的函数中,添加:

    import UserScore
    UserScore.user = user
    

    UserScore.py 中,将其放在顶部附近:

    user = None
    

    然后在UserScore.UserScore函数中,访问变量user即可。

    (给模块和类以相同的大小写相同的名称可能不是一个好主意,可能会让人感到困惑。)

    【讨论】:

    • 那么 UserScore.py 是这样设置的-class UserScore(Frame): def __init__(self,master): Frame.__init__(self,master) self.pack() self.getRecords() def getRecords(self): 是否也可以在该代码中访问全局变量?我需要在init方法中声明它吗?
    • 感谢您的建议!我已经使用您建议的解决方案解决了问题。
    • 好,记住它不是 Pythonic,也不是最好的方法。只是一个简单的方法。
    猜你喜欢
    • 2014-01-02
    • 2014-04-22
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多