AttributeError:对象没有属性(例如“Python速成课程”一书中的示例)

2024-04-23 20:15:57 发布

您现在位置:Python中文网/ 问答频道 /正文

几天前我刚开始学习python,我读的书是“python速成课程”

我不知道我在这段代码中遗漏了什么,请帮帮我!你知道吗

class mathfunctions:
  def addition(self,num1,num2):
      return num1+num2
  def subtraction(self,num1,num2):
      return num1-num2
  def multiply(self,num1,num2):
      return num1*num2
  def divide(self,num1,num2):
      return num1/num2
class actiondeclarer():
  action = None
  x = None
  y = None
  functions = mathfunctions()
  def __init__(self,actionnum,num1,num2):
      self.action = actionnum
      self.x = num1
      self.y = num2
      self.actionpicking()
      def actionpicking(self):
         if self.action is 1:
             print("sum is ",self.functions.addition(self.x,self.y))
         elif self.action is 2:
             print("difference is ",self.functions.subtraction(self.x,self.y))
         elif self.action is 3:
             print("multitude is ",self.functions.multiply(self.x,self.y))
         elif self.action is 4:
             print("divide is ",self.functions.divide(self.x,self.y))
         else:
            print("invalid")

checker = actiondeclarer(1,5,10)

错误消息为AttributeError:“actiondeclarer”对象没有“actionpicking”属性

顺便说一下,如果代码是正确的,那么结果“sum is 15”可以在不键入print(checker)的情况下显示,对吗?你知道吗


Tags: 代码selfnonereturnisdefactionfunctions
1条回答
网友
1楼 · 发布于 2024-04-23 20:15:57

你的压痕消失了。你知道吗

def __init__(self,actionnum,num1,num2):
  # Code
  self.actionpicking()
  def actionpicking(self):
     # Code

这在__init__中本地定义了一个闭包。您希望actionpicking的缩进级别与__init__的缩进级别匹配。你知道吗

def __init__(self,actionnum,num1,num2):
  # Code
  self.actionpicking()
def actionpicking(self):
  # Code

相关问题 更多 >