Python 调用我定义的实例方法时的AttributeError

Python 调用我定义的实例方法时的AttributeError,python,Python,我在Python3中对此进行了编码,它显示了一个属性错误 详情如下: import datetime class MessageUser(): User_Details = [] Messages = [] base_message = """Hi {name}! Thank you for the purchase on {date}. We hope you are exicted about using it. Just as a reminder the

我在Python3中对此进行了编码,它显示了一个属性错误 详情如下:

import datetime 

class MessageUser():
  User_Details = []
  Messages = []
  base_message = """Hi {name}! 
  Thank you for the purchase on {date}. 
  We hope you are exicted about using it. Just as a
  reminder the purcase total was ${total}.
  Have a great time!

  from Pritom_Mazhi
  """

  def add_user(self, name, amount, email=None):
    name = name[0].upper() + name[1:].lower() #Capitalizing the first letter of all names - formatted name
    amount = "%.2f" %(amount) #formatted amount 
    detail = {
      "name" : name,
      "amount" : amount,
    }
    today = datetime.date.today()
    date_text = '{tday.day}/{tday.month}/{tday.year}'.format(tday=today) #formatted date 
    detail["date"] = date_text
    if email is not None:
      detail["email"] = email
    self.User_Details.append(detail)

    def get_details(self):
      return self.User_Details

    def make_message(self):
      if len(self.User_Details) > 0:
        for detail in self.get_details():  #for detail in self.User_Details
          name = detail["name"]
          amount = detail["amount"]
          date = detail["date"]
          email = detail["email"]
          message = self.base_message
          formatted_message = message.format(
            name = name,
            total = amount,
            date = date,
            )
          self.Messages.append(formatted_message)  
          return self.Messages
      else:
          return []


obj = MessageUser()
obj.add_user("Pritom", 123.32, email='hello@teamcfe.com')
obj.add_user("jon Snow", 94.23)
obj.add_user("Sean", 93.23)
obj.add_user("Emilee", 193.23)
obj.add_user("Marie", 13.23)
obj.get_details()

obj.make_message()
当我运行它时,会出现以下错误:

File "Class_StringFormat.py", line 57, in <module>
    obj.get_details()
AttributeError: 'MessageUser' object has no attribute 'get_details'
文件“Class_StringFormat.py”,第57行,在
对象获取详细信息()
AttributeError:'MessageUser'对象没有属性'get\u details'

我根本找不到我在那里做错了什么,因此无法修复它。

如果你的缩进在问题中复制正确,
get\u details
是在内部定义的,从外部看不到

您应该取消
get\u details
make\u message
的定义,使其与
add\u user
处于同一级别:

def add_user(self, name, amount, email=None):
   # method body...

def get_details(self):
   return self.User_Details

def make_message(self):
   # method body

您可能需要重新表述问题的标题。这应该是你所问问题的一个指示。顺便说一句:错误可能是由缩进引起的。好的,非常感谢你的解决方案。在我正确地缩进后-如果我在最后一行打印(obj.make_message()),它只显示“pritom”的消息,而不显示“jon snow,sean,emilee,marie”等的消息。我如何解决这个问题?我希望代码在执行print(obj.make_message())这一行后,能够以一种方式打印所有消息。@SamiulSalehin问题在于make_message,在for循环中有一个return语句。它在第一次迭代时返回,循环的其余部分不执行。您需要在循环完成后返回。@SamiulSalehin太棒了!考虑将答案标记为“接受”,以表明您的问题已经解决。我在GoStOfOfFuffy中是新手,回答问题。您能告诉我如何将您的答案标记为“接受”吗?@ SamiulSalehin,您应该从答案中看到一个滴答声,您可以点击它接受它。