2016-07-05 17 views
-2

クラスの適切なメソッドを呼び出すreservation関数が必要です。外部関数でメソッドを呼び出す方法

しかし、私はクラスの外でユーザー入力を提供する必要がある場合、メソッドに引数を渡すことはできますか?

class Stay: 
    def __init__(self): 
     self._type_room= '' 

    def set_type_room (self, NewRoom): 

     NewRoom= select_room() 
     self._type_room= NewRoom 


def select_room(): 
    Newroom= input ('insert') 
    if NewRoom == 'Single': 
     print ('ok') 
    else: 
     print ('only Single') 
    return NewRoom 

def reservation(): 
    stay= Stay() 
    stay.set_type_room(NewRoom) 
+1

ない、ここで求められているものを確認してください。コードが想定していないことを明確にすることはできますか? –

+0

コードを開始すると、「NewRoom」は定義されていません。 – Peter

+2

最後の行と 'set_type_room'メソッドの引数から' NewRoom'を削除してください。 –

答えて

0

NewRoomは機能reservation内部またはグローバルスコープで(存在しない)に定義されていないので、あなたはそれにアクセスすることはできません。

select_room関数で再作成するときに、引数をset_type_roomに不必要に渡しています。

だから、あなたはちょうどそのパラメータを削除することができますし、問題ないはずです。

class Stay: 
    def __init__(self): 
     self._type_room= '' 

    def set_type_room (self): 
     self._type_room = select_room() 


def select_room(): 
    Newroom= input ('insert') 
    if NewRoom == 'Single': 
     print ('ok') 
    else: 
     print ('only Single') 
    return NewRoom 

def reservation(): 
    stay= Stay() 
    stay.set_type_room() 

あなたはset_type_roomはセッターメソッドになりたい場合は、次の

class Stay: 
    def __init__(self): 
     self._type_room= '' 

    def set_type_room (self, NewRoom): 
     self._type_room = NewRoom 

def select_room(stay): 
    NewRoom = input ('insert') 
    if NewRoom == 'Single': 
     print ('ok') 
    else: 
     print ('only Single') 
    stay.set_type_room(NewRoom) 

def reservation(): 
    stay = Stay() 
    select_room(stay) 
+1

また、 'NewRoom'への割り当ては簡単に取り除くことができます。 – jonrsharpe

+0

良い点。私は答えを –

+0

更新しますが、これらの外部関数を使用するのは正しいですか?私は必ずこのプロジェクトでクラスを使用する必要があります – Peter

関連する問題