将变量传递给另一个Python脚本
在另一个python脚本中,我很难将变量从一个函数传递到另一个函数。我已经阅读了其他答案,但它们在这个问题上没有真正的帮助 这是我想将变量发送到的第一个文件(为了清晰起见,省略了一些代码) 这是sceond文件:将变量传递给另一个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
# 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)感谢您的指导。我很感激