0

これを実行すると、「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)
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

はい、別の関数内の関数にアクセスすることは完全に可能です。

コードが機能しない理由は、 classのメンバー関数またはメソッド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 に答える