【问题标题】:Python error: function not defined in classPython错误:类中未定义函数
【发布时间】:2021-02-25 05:07:16
【问题描述】:

我刚开始在 Java 方面有一点背景来学习 python,并且每当我尝试运行我的代码时都会遇到这个错误。输出和错误信息

这是我在这个类中编写的方法。所涉及的方法,除了最后一个

我检查了多次,这不是拼写错误。我不明白为什么我不能在同一个类中调用另一个方法。

【问题讨论】:

标签: python function methods


【解决方案1】:

要访问同一类中的方法,您必须使用 self 这个词。要使该词有效,每个方法都必须将其作为第一个参数。 p>

也就是说,你会这样定义上面的方法::

def main(self): self.run()

然后在运行时:: def run(self): #do your stuff down here

请务必考虑 python 的制表符,因为 stackoverflow 不允许我这样做,或者我不知道该怎么做

【讨论】:

    【解决方案2】:

    您需要在整个类中添加self,将其传递给每个方法,并在调用方法和引用变量时使用它。

    class RPS:
        def main(self):
            print ("Let's play some RPS.")
            self.run()
    
        def run(self):
            self.compTurn()
    
        def compTurn(self):
            compRo11 = 1
    
            if compRo11 == 1:
                compRo11 = 'rock'
            elif compRo11 == 2:
                compRo11 = 'paper'  
            elif compRo11 == 3:
                compRo11 = 'scissors'
    
            print(compRo11)
    
        def usrTurn(self,compRo11):
            pass
    
    rps = RPS()
    
    rps.main()
    

    【讨论】:

      【解决方案3】:
      class Hello:
      
          def main(self):
              print("print")
              self.run()
          def run(self):
              print("run")
      
              
      hello = Hello()
      
      hello.main()
      

      谢谢

      【讨论】:

      • 这应该在外部类机制中工作(基于函数)....但是对于类中的方法,顺序并不是那么有用
      • Yash,我确实看到了这个概念,并且非常了解这个自我术语,如果更有用的话,谢谢你让我知道!
      • 请添加一些解释。
      • @Yatin,self 关键字携带类的实例,以便可以访问该类中的方法(无论它们的位置如何)。通常,如果没有类,您需要在引用它之前先定义一个方法。这是因为python是从上到下解释的
      • @Yatin,您可以从stackoverflow.com/questions/1590608/…了解更多信息
      猜你喜欢
      • 1970-01-01
      • 2022-01-11
      • 2021-12-20
      • 2014-05-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 2012-03-09
      相关资源
      最近更新 更多