Python 我需要一节代表课?
我有一个听起来像是授权问题的问题。我有如下代码:Python 我需要一节代表课?,python,python-3.x,Python,Python 3.x,我有一个听起来像是授权问题的问题。我有如下代码: class foo(object): def __init__(self,onEvent1="", onEvent2=""): self.OnEvent1=onEvent1 self.OnEvent1=onEvent2 def aLoop(self): ... #in case of event1 self.OnEvent1() ..
class foo(object):
def __init__(self,onEvent1="", onEvent2=""):
self.OnEvent1=onEvent1
self.OnEvent1=onEvent2
def aLoop(self):
...
#in case of event1
self.OnEvent1()
...
#in case of event2
self.OnEvent2()
EventType=0
def MyBar1():
print("Event Type1")
EventType=1
def MyBar2():
print("Event Type2")
EventType=2
myFoo=foo(MyBar1,MyBar2)
while True:
myFoo.aLoop()
if (EventType==1):
print ("EventType is 1")
EventType=0
elif (EventType==2):
print ("EventType is 2")
EventType=0
我可以在回调函数中看到print()
消息,但在while循环中看不到print()
消息。
变量EventType
不会更改其值
我能做什么
EventType=0
def MyBar1():
global EventType
print("Event Type1")
EventType=1
def MyBar2():
global EventType
print("Event Type2")
EventType=2
问题是,您需要修改一个全局变量,但您正在创建一个局部变量。您仍然可以访问全局变量,而无需使用
全局变量
。您需要修改它。MyBar1
和MyBar2
中的EventType
变量是局部变量。绑定到的任何变量都是本地变量,除非另有明确配置;赋值、函数参数、函数或类定义以及导入的名称都是绑定名称的方法
您需要使用global
语句来更改:
def MyBar1():
global EventType
print("Event Type1")
EventType=1
def MyBar2():
global EventType
print("Event Type2")
EventType=2
请注意,为事件参数指定一个空字符串作为默认参数没有什么意义:
def __init__(self,onEvent1="", onEvent2=""):
如果它们是可选的,请将它们设置为None
,然后测试:
def __init__(self, onEvent1=None, onEvent2=None):
self.OnEvent1 = onEvent1
self.OnEvent2 = onEvent2
def aLoop(self):
...
#in case of event1
if self.OnEvent1 is not None:
self.OnEvent1()
...
#in case of event2
if self.OnEvent2 is not None:
self.OnEvent2()
坦克的帮助,即使在传递的论点。我是python编程新手,通常用c和Vb.net编写程序。