0

当我运行它时,我得到一个 NameError 的'is_number'。是否可以访问另一个函数中的函数?我怎样才能让“is_number”工作?

class Bank_Account():
    account = 0
    def is_number(s):
        try:
            float(s)
            return True
        except ValueError:
            return False

    def deposit(self, amt):
        self.amt = amt
        if is_number(str(amt)):
            return "Invalid Input"
        else:

            self.account += float(amt)
4

3 回答 3

1

您放入is_number类的主体,使其成为方法。

您要么需要将其移出类主体,要么通过给它一个self参数使其成为适当的方法,然后在实例上调用它:

if self.is_number(amt):

由于您的is_number函数与类的其余部分关系不大,您可以将其移出:

def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

class Bank_Account():
    account = 0

    def deposit(self, amt):
        self.amt = amt
        if is_number(amt):
            return "Invalid Input"
        else:
            self.account += float(amt)
于 2013-10-23T23:03:20.777 回答
0

是的,完全可以在另一个函数中访问一个函数。

您的代码不起作用的原因是它is_number被定义为类的成员函数或方法Bank_Account

这意味着它需要self在定义中有一个参数,并且您需要将其称为self.is_number.

或者,或者,您需要将它移到类之外,因此它是一个全局函数。

(或者,甚至更多,使用@staticmethod.)

于 2013-10-23T23:04:11.923 回答
-1

您在类中定义函数is_number,因此您需要调用self.is_number.

class Bank_Account(object):

    def __init__(self):
        self.placeholder = None

    account = 0
    def is_number(s):
        try:
            float(s)
            return True
        except ValueError:
            return False

    def deposit(self, amt):
        self.amt = amt
        if self.is_number(str(amt)):
            return "Invalid Input"
        else:

            self.account += float(amt)
于 2013-10-23T23:03:28.717 回答