将变量传递给另一个Python脚本

将变量传递给另一个Python脚本,python,function,variables,arguments,Python,Function,Variables,Arguments,在另一个python脚本中,我很难将变量从一个函数传递到另一个函数。我已经阅读了其他答案,但它们在这个问题上没有真正的帮助 这是我想将变量发送到的第一个文件(为了清晰起见,省略了一些代码) 这是sceond文件: # TestGUI_2.py from TestGUI import Testgui class Tracker: def __init__(self): pass def drive(self,cords, cords1): while

在另一个python脚本中,我很难将变量从一个函数传递到另一个函数。我已经阅读了其他答案,但它们在这个问题上没有真正的帮助

这是我想将变量发送到的第一个文件(为了清晰起见,省略了一些代码)

这是sceond文件:

# TestGUI_2.py

from TestGUI import Testgui

class Tracker:
    def __init__(self):
       pass
    def drive(self,cords, cords1):
       while( cords >= 320):        
           l='l'
           Testgui.writetoBOT(l)      # This is the problem line 

TypeError:必须使用TestGUI实例作为第一个参数调用未绑定的方法writetoBOT()(改为使用str实例)

writetoBOT
接受两个参数:
self
instruction
。 使用
Testgui
实例调用它:

tgui=Testgui(your_master)
tgui.writetoBOT(l)
如果要使用
Testgui
类调用它,仍然需要传递
Testgui
的实例:

tgui=Testgui(your_master)
Testgui.writetoBOT(tgui, l)

writebot
接受两个参数:
self
instruction
。 使用
Testgui
实例调用它:

tgui=Testgui(your_master)
tgui.writetoBOT(l)
如果要使用
Testgui
类调用它,仍然需要传递
Testgui
的实例:

tgui=Testgui(your_master)
Testgui.writetoBOT(tgui, l)

或者,您可以为这两个脚本创建公共空间,它由database-sqllite创建

比如说,

# file1.py
import sqlite3

con = sqlite3.connect('messages.db')
cur = con.cursor()
#cur.execute('CREATE TABLE message (id INTEGER PRIMARY KEY, name TEXT, content TEXT, read INTEGER)')
#con.commit()


for x in range(100000):
    if x in range(1, 500): 
        cur.execute('INSERT INTO message (id, name, content, read) VALUES(NULL, "Guido", "van Rossum", 0)')
        con.commit()

# file2.py 
import sqlite3
import time

con = sqlite3.connect('messages.db')
cur = con.cursor()

def listen():
    messages = cur.execute('SELECT * FROM message WHERE read=0')
    if not messages:
        return False 
    for m in messages: 
        print 'get message ', m
        cur.execute("UPDATE message SET read=1 WHERE id=?", m[0])        
        con.commit()
        print 'update db'
    return True

while True: 
    listen()
    time.sleep(5)

或者,您可以为这两个脚本创建公共空间,它由database-sqllite创建

比如说,

# file1.py
import sqlite3

con = sqlite3.connect('messages.db')
cur = con.cursor()
#cur.execute('CREATE TABLE message (id INTEGER PRIMARY KEY, name TEXT, content TEXT, read INTEGER)')
#con.commit()


for x in range(100000):
    if x in range(1, 500): 
        cur.execute('INSERT INTO message (id, name, content, read) VALUES(NULL, "Guido", "van Rossum", 0)')
        con.commit()

# file2.py 
import sqlite3
import time

con = sqlite3.connect('messages.db')
cur = con.cursor()

def listen():
    messages = cur.execute('SELECT * FROM message WHERE read=0')
    if not messages:
        return False 
    for m in messages: 
        print 'get message ', m
        cur.execute("UPDATE message SET read=1 WHERE id=?", m[0])        
        con.commit()
        print 'update db'
    return True

while True: 
    listen()
    time.sleep(5)

您将
Testgui
声明为一个类。这可以理解为骨架或线框(注意,这是一条捷径,而不是现实)。为了使用它,首先需要从该骨架创建一个“真实”对象

testgui=Testgui(amaster)
在类中,可以有在类级别应用的方法(绑定函数)。这些方法称为静态方法或类方法。它们必须用python进行装饰


有关更多信息,请参阅。

您将
Testgui
声明为类。这可以理解为骨架或线框(注意,这是一条捷径,而不是现实)。为了使用它,首先需要从该骨架创建一个“真实”对象

testgui=Testgui(amaster)
在类中,可以有在类级别应用的方法(绑定函数)。这些方法称为静态方法或类方法。它们必须用python进行装饰


有关更多信息,请参阅。

您有两个文件,但您正试图执行一个脚本,对吗?你的描述很混乱。你有两个文件,但你试图执行一个脚本,对吗?你的描述很混乱,(你的导师)是调用类吗?在本例中,Tracker()?@user3257360这是构造Testgui实例时需要传递的参数。请参阅
def\uuuu init\uuu(self,master)
。这段代码不是你写的吗?为了修复我的代码,我创建了另一个名为writetoSerial()的类,并将串行写入代码放入其中。然后导入函数,然后使用:from TestGUI_2 import writetoSerial调用它,然后调用函数:l='l't=writetoSerial()t.writetoBOT(l)感谢您的指导。我很感激(你的导师)是主修课吗?在本例中,Tracker()?@user3257360这是构造Testgui实例时需要传递的参数。请参阅
def\uuuu init\uuu(self,master)
。这段代码不是你写的吗?为了修复我的代码,我创建了另一个名为writetoSerial()的类,并将串行写入代码放入其中。然后导入函数,然后使用:from TestGUI_2 import writetoSerial调用它,然后调用函数:l='l't=writetoSerial()t.writetoBOT(l)感谢您的指导。我很感激