2

数日間検索して別のコードを試しても、まだ問題を特定できません。したがって、私はこの質問をここに投稿しました。

この問題では、Python 2.7.2を使用しています。具体的には、compositionを使用して、あるクラスの関数を別のクラスにインポートしています。インポートされたクラスの関数には、に基づく単純なifステートメントが含まれていraw_inputます。ユーザーの入力に応じて、ifステートメントは、入力に対応する新しい関数を呼び出すか、少なくとも呼び出すのに役立ちます。ただし、この関数は、インポートされるクラスではなく、インポートされるクラスの一部になります。

ここでは、クラスごとに1つずつ、合計2つの.pyファイルを使用しており、それらは同じフォルダーにあります。

これが最初のファイル(main.py)で、メインクラスが含まれています。

# importing class from file in same folder
from class_decision import Decision

class Main_Compositor(object):

    def __init__(self):
        # using composition to call the function of the imported class
        self.door_decision = Decision()

    def comp_door(self):
        self.door_decision.user_text()

        if door == "left":
            left_door()
        elif door == "right":
            right_door()
        else:
            print "incorrect input"

    def left_door(self):
        print "you're in the left room"

    def right_door(self):
        print "you're in the right room"


# instantiating
A_Compositor = Main_Compositor()

# calling A_Compositor's function comp_door()
A_Compositor.comp_door()

そして、これがclass_decision.pyファイルで、そのクラスはインポートされています。

class Decision(object):

    def user_text(self):
        print "which door do you open:"
        print "left or right?"

        door = raw_input("> ")

        if door == "left":
            print "you have chosen the left door"
            return door
        elif door == "right":
            print "you have chosen the right door"
            return door
        else:
            print "you must choose a door"
            self.user_text()

ご覧のとおりReturn、メインクラスに変数を知らせるために使用しようとしていますdoor。これは、の誤った使用である可能性がありますReturn。私もうまくいっていませんgetattrでした。この質問がたくさん聞かれたことをお詫びします。私と同じような質問はすべて配列に関係しているようで、私はそれらの答えから自分の問題を本当に理解することができませんでした。助けてくれてありがとう。

4

3 に答える 3

2
def user_text(self):
    print "which door do you open:"
    print "left or right?"

    door = raw_input("> ")

    if door == "left":
        print "you have chosen the left door"
        return door
    elif door == "right":
        print "you have chosen the right door"
        return door
    else:
        print "you must choose a door"
        return self.user_text()  # don't forget to return in the recursion case
def comp_door(self):
    choice = self.door_decision.user_text()  # actually use the returned result

    if choice == "left":
        self.left_door()
    elif choice == "right":
        self.right_door()
    else:
        print "incorrect input"
于 2012-10-31T22:42:41.477 に答える
0

メソッドが1 つしかないため、ここでクラスを使用しても意味がありません。

関数にするだけDecisionです。

于 2012-10-31T22:26:05.920 に答える
-1
于 2012-10-31T22:48:58.727 に答える