【问题标题】:NameError: name not defined when calling function inside of a classNameError:在类内调用函数时未定义名称
【发布时间】:2022-01-14 19:04:52
【问题描述】:

我是 python 新手,正在编写一个简单的基于文本的冒险游戏,我收到一条错误消息,提示 “NameError: name 'bedroom' is not defined”。我最初有一堆函数定义,在这种情况下一切正常,但决定将它们分组到类中,这是错误开始的时候。

class Rooms:
      def start():
        print(".....")
        answer = input(">")
        if "1" == answer
        bedroom() #this is the line the error is coming from

      def bedroom():
        print(".....") 

【问题讨论】:

  • 搞定了,感谢大家的帮助!
  • 您能否将最有帮助的答案标记为已接受,以便社区判断什么是最有帮助的?

标签: python class oop


【解决方案1】:

你可以这样做:或者添加一个self作为函数的参数,或者你可以调用 CLASS_NAME.FUNC_NAME() 所以你应该这样做:

class Rooms:

    def bedroom(self):use self as a parameter
        print(".....") 

    def start(self): #use self as a parameter
        print(".....")
        answer = input(">")
        if "1" == answer:
            self.bedroom() #nothe the use of self

而且,永远不要这样做:

class Rooms:
      def bedroom():
        print(".....") 

      def start():
        print(".....")
        answer = input(">")
        if "1" == answer
        Rooms.bedroom() #Fixed

【讨论】:

  • 根据 PEP 20 应该有一种——最好只有一种——明显的方法。这使您的答案不符合标准
【解决方案2】:

要从同一个类中调用一个方法,您需要传递参数self,该参数用于将当前类引用到该方法并调用bedroom(),在这种情况下,它像self.bedroom()那样完成,而不是像这样调用它bedroom():

class Rooms:

    def bedroom(self):use self as a parameter
        print(".....") 

    def start(self): #use self as a parameter
        print(".....")
        answer = input(">")
        if "1" == answer:
            self.bedroom() #note the use of self

【讨论】:

  • 对不起功能问题我的错误我修复了它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多