2

質問の件名の言い方がよくわかりません...

私は3つのファイルをレイアウトしています:

bank.py:

class Bank(object):

    def __init__(self, money):
        self.money = money

    def currentMoney(self):
        print "You currently have $%d" %self.money

    def useMoney(self, money_use):
        self.money = self.money - money_use
        print "You used $%d" %money_use
        self.currentMoney()

    def getMoney(self, money_get):
        self.money = self.money + money_get
        print "You received $%d" %money_get
        self.currentMoney()

イベント.py:

class Event(object):

    def Event1(self):
        print "Your dad needs money. Will you give him?"
        decision = raw_input("Yes or No")
        if decision == "Yes":
            Bank.useMoney(500)
        elif decision == "No":
            print "Your father is sad"
        else:
            print "I do not know what are you talking about"

main.py:

import bank
import event

Bank = bank.Bank(1000)
Event = event.Event()

Event.Event1()

コードを実行すると。次のエラーが表示されます。

NameError: global name 'Bank' is not defined

基本的に、私がやりたいことは、event.py を使用して、お金に影響を与える一連のイベントを作成することです。main.py を使用して、さまざまな一連のイベントを実行できます。

これを行う方法を教えていただけませんか?ありがとうございました!

4

2 に答える 2

2

他の回答で述べたように、インポートする必要がありBankますevent.py

from bank import Bank

そうは言っても、のコードを見ると、event.py次の行で別のエラーが発生します。

 Bank.useMoney(500)

useMoney()最初の引数と同じように、クラス自体ではなくインスタンスselfで実行する必要があります(Javaタイプでは、静的メソッドではなくインスタンスメソッドです)。Bank useMoney

あなたの意図は、インスタンスを内部に含めることであり、呼び出されるたびにそれを呼び出すことだと思います。BankEventuseMoneyEvent1

于 2012-09-25T15:11:55.927 に答える
1

import bankで、使用する必要がevent.pyあります

if decision == "Yes":
    bank.Bank(...)

またはあなたの冒頭で使用することができますevent.py

from bank import Bank

class Event(object):
    ...

そうしないと、Python は、モジュールをロードするときに、Bankオブジェクトがモジュールで定義されていることを認識できません。bankevent

于 2012-09-25T15:06:23.247 に答える