2013-10-13 173 views
0

我是python的新手,并且一直在练习类和方法。当我运行包含以下代码的脚本时,出现错误“NameError:全局名称”nameCheck“未定义。”我该如何解决它?提前致谢。Python“NameError:全局名称”nameCheck“未定义。”

class game(object): 
    def play(): 
     name = input("What's your name, my friend? ") 
     check = nameCheck(name) 

     if check == 1: 
      print ("Hello %r " %(name)) 
     else: 
      print ("Sorry, I can't print your name because you don't have one!") 


    def nameCheck(name): 
     if name == "": 
      print("I can't believe you have no name!") 
      return 0 

     else: 
      print("%s is a nice name!" %name) 
      return 1 
game.play() 

蟒“NameError:全球名” nameCheck“没有定义”。

+1

我知道你在练习,但在Python中,你通常不会写一个类这一点,除非你想实际存储约内的一些游戏的状态类。 –

回答

3

由于方法是在一个类中,你需要给那么自我属性:

做到这一点:

class game(object): 
    def play(self): 
     name = input("What's your name, my friend? ") 
     check = self.nameCheck(name) 

     if check == 1: 
      print ("Hello %r " %(name)) 
     else: 
      print ("Sorry, I can't print your name because you don't have one!") 


    def nameCheck(self, name): 
     if name == "": 
      print("I can't believe you have no name!") 
      return 0 

     else: 
      print("%s is a nice name!" %name) 
      return 1 
game = Game() 
game.play() 

self是实例的占位符所以你必须创建一个实例通过这样做game = game()然后你可以调用任何方法

现在你可以从类的任何地方调用方法,如果你给变量的自我属性,他们也可以可以访问任何地方类

更多self

+0

这是现货!我现在可以舒适地使用类和方法。非常感谢@Christina Careaga! – Gerard

+0

没问题!它需要一些习惯,但它是非常有用的! – Serial

2

内一类,Python函数被调用的方法,并用这样的:

class game(object): 

    def play(self): 
     self.nameCheck(name) 

    def nameCheck(self): 
     pass 

self包含班级的目标。

+0

感谢您的洞察,@Noctua! – Gerard

相关问题