赋值前引用的全局变量

时间:2018-05-31 21:47:25

标签: python python-2.7

我想检查全局变量是否返回null。在单击事件中调用def C(),这意味着不会明确分配patientName。但是,我不知道如何解决它。

我的代码如下:

class Example(): 
  patientName = 0

  def A(): 
    global patientName 
    patientName = "12"

  def B(): 
    print (patientName) #prints 12

  def C(): 
    #I want to check if patientName = null here 
    #how to do it? 
    #Assume C is triggered by the click event. 
    if patientName!="123" --> throws global variable patientName 
                            referenced before assignment....

谢谢!

3 个答案:

答案 0 :(得分:0)

  class Example(): 
  patientName = None

  def A(self): 

    self.patientName = "12"

  def B(self): 
    print (self.patientName) #prints 12

  def C(self): 
    #I want to check if patientName = null here 
    #how to do it? 
    #Assume C is triggered by the click event. 
    if(self.patientName==None):
        print("do something")

以下是运行支票的示例

ex=Example()
ex.A()
ex.C()

答案 1 :(得分:0)

你想要这个,patientName是一个全局名称

patientName = 0

class Example(): 

  def A(): 
    global patientName 
    patientName = "12"

  def B(): 
    print (patientName) #prints 12

  def C(): 
    if patientName!="123" 

或更多可能你想要这样的东西

class Patient():

  def __init__(self, name):
    self.name = name

  def C(self): 
    if self.name!="Sally":
       # do something

patient1 = Patient("Mary")
print(patient1.name) # Mary
patient1.C()

全局名称将位于外部作用域中,并且只要您想在内部作用域中写入其值,就必须事先在该作用域中声明它的全局。对于正常范围规则的读取,不需要全局语句。但是,您可能希望创建Patient的不同实例。这是第二个建议。在类中定义名称 但在任何方法之外使其成为类名,这是所有实例共享的名称(除非实例将somename指定为隐藏共享self.somename的{​​{1}}。我假设您希望与每个实例关联的名称而不是共享的类名,这就是我使用Patient.somename分配它的原因。

答案 2 :(得分:-1)

我相信你可以试试

ImportError