2016-07-05 76 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。如果你想在set_type_room是setter方法

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() 

所以,你可以刪除的參數,你應該罰款

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