глобальная переменная, на которую ссылаются перед присвоением - PullRequest
0 голосов
/ 01 июня 2018

Я хочу проверить, возвращает ли глобальная переменная нуль.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 голосов
/ 01 июня 2018
  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()
0 голосов
/ 01 июня 2018

Вы либо хотите это, с пациентом, которое является глобальным именем

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, скрывая общий Patient.somename).Я предполагаю, что вам нужно имя, связанное с каждым экземпляром, а не имя общего класса, поэтому я назначаю его с помощью self.

0 голосов
/ 01 июня 2018

Полагаю, вы можете просто попробовать

if( patientName!== 'undefined' ) {
    // foo could get resolved and it's defined
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...