访问另一个函数python中的函数

时间:2013-10-23 23:01:23

标签: python function

当我运行它时,我得到'is_number'的NameError。是否可以访问另一个功能的功能?我怎么能让'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)

3 个答案:

答案 0 :(得分:1)

您将is_number放在类的主体中,使其成为一种方法。

您需要将其移动到 out 类主体,或者通过给它一个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)

答案 1 :(得分:0)

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

您的代码无效的原因是is_number被定义为类Bank_Account成员函数或方法

这意味着它需要在定义中包含self参数,您需要将其称为self.is_number

或者,或者,你需要将它移到课外,这是一个全局函数。

(或者,更常见的是,使用@staticmethod。)

答案 2 :(得分:-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)