0

口座への入金と出金を行うシンプルなプログラムです。私はクラスをテストするだけでクラスを学ぼうとしています。

class bank:
    def __init__(self):
        self.origBal = 0
    def deposit(self, amount):
        self.origBal += amount
    def withdraw(self, amount):
        self.origBal -= amount
b = bank()
d = bank()
w = bank()

私が抱えている問題は、おそらく出力から最もよくわかります。

たとえば、ここに出力があります。

w.withdraw(3423)
b.origBal
-3423
d.deposit(3423)
b.origBal
-3423
d.deposit(322423)
d.origBal
325846
d.deposit(3223)
d.origBal
329069
w.withdraw(324334)
b.origBal
-3423
w.withdraw(234)
b.origBal
-3423

何が起こっているのか正確にはわかりません。

(-n) または (+n) を手動で入力するだけで修正できると確信しており、方法は 1 つしかありませんが、それは避けたいと思います。

4

2 に答える 2

2

その際、b = bank()バンクを 1 つ作成します。その際d = bank()、2 番目のバンクを作成します。その場合w = bank()、3 番目のバンクを作成します。各銀行には独自のorigBal. deposit3 つのオブジェクトのいずれかでorを呼び出しwithdrawても、他の 2 つのオブジェクトには影響しません。もしあなたがそうするなら

b = bank()
b.deposit(10)
b.withdraw(100)

. . . その後、期待どおりに動作するはずです。

クラスがどのように機能するかを学ぶには、Python チュートリアルを読む必要があります。

于 2012-10-07T02:22:45.193 に答える
1

必要なことを行うには、オブジェクト変数ではなくクラス変数を使用する必要があります。これらは、以下に示すように、クラス全体で定義および使用されます。

class Bank(object):
    origBal = 0
    def deposit(self, amount):
        Bank.origBal += amount
    def withdraw(self, amount):
        Bank.origBal -= amount

b = Bank()
d = Bank()
w = Bank()

w.withdraw(3423)
b.origBal
-3423
d.deposit(3423)
b.origBal
0
d.deposit(322423)
b.origBal
322423
d.deposit(3223)
b.origBal
325646
w.withdraw(324334)
b.origBal
1312
w.withdraw(234)
b.origBal
1078
于 2012-10-07T02:27:09.907 に答える