【问题标题】:[Beginner Python]Issues trying to access a function within a class[初学者 Python] 尝试访问类中的函数的问题
【发布时间】:2023-02-22 01:44:53
【问题描述】:

我正在尝试运行一个简单的预算程序,并且我是 python 类的完全初学者。我正在尝试运行类中的所有内容,以便我可以回调特定函数。问题是我无法让函数工作,当我尝试运行任何函数时,我总是返回一个 NameError。尽管已定义,但它一直说“billNamePrompt() 未定义”?

bill_name = ''
...
class Prompts:
    def __init__(self, bill_name):
        print("Hello! Welcome to my mini-budgeting program")
        billNamePrompt()

    def billNamePrompt(self):
        self.bill_name = input("Please input the name of the bill: ")
        return self.bill_name

...


Prompts(bill_name)

我试过稍微弄乱它,但我对课程的经验很少,以至于我不知道自己在做什么。它不在班级内执行我做错了什么?我认为类能够在类中运行函数?抱歉,如果解决方案非常明显,但我无法在任何地方找到答案。

【问题讨论】:

  • 这无疑是重复的,但你正在寻找self.billNamePrompt()
  • 对不起,我只是不知道如何用问题的措辞来找到答案
  • 不用担心。它现在有效,对吧?
  • 是的,没有意识到答案是那么明显,哈哈。欣赏 <3
  • 有问题的术语是称呼A成员函数, 有时称为方法.

标签: python-3.x oop python-class


【解决方案1】:

在里面表示调用类时的第一个函数。所以在你的代码中,你在定义函数之前先调用它。

您的代码运行如下:

提示 -> __init__ -> 调用 billNamePrompt() -> 识别 billNamePrompt()

你可以通过添加self来解决问题。 或者您可以将代码写入在里面不添加另一个定义

【讨论】:

    【解决方案2】:
    bill_name = ''
    class Prompts:
        def __init__(self, bill_name):
            print("Hello! Welcome to my mini-budgeting program")
            self.billNamePrompt()
    
        def billNamePrompt(self):
            self.bill_name = input("Please input the name of the bill: ")
            return self.bill_name
    
    x = Prompts(bill_name)
    

    【讨论】:

      猜你喜欢
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多