2013-02-27 67 views
0

我收到一個錯誤....我知道我做錯了什麼,但不知道如何解決它。我知道我不能將一個字符串添加到一個整數...任何想法,我會很感激!python總結

self.variables['gas'] = 'gas'+add 
TypeError: Can't convert 'int' object to str implicitly 

我的代碼:

class Cars:   
    def __init__(self, **kwargs): 
     self.variables = kwargs 

    def set_Variable(self, k, v): 
     self.variables[k] = v 

    def get_Variable(self, k): 
     return self.variables.get(k, None)  

    def add_gas(self, add, gas): 
     self.variables['gas'] = gas+add 


def main(): 
    mercedes = Cars(gas = 3) 
    print (mercedes.get_Variable('gas')) 
    print(mercedes.add_gas(4)) 


if __name__ == "__main__": main() 
+0

您的回溯和您的示例代碼不匹配。 – 2013-02-27 17:39:27

回答

0

你的方法add_gas需要兩個參數,你只是一個傳遞給函數。此外,您正在打印返回值,但函數中沒有返回值。

這一個爲我工作:

class Cars:   
    def __init__(self, **kwargs): 
     self.variables = kwargs 

    def set_Variable(self, k, v): 
     self.variables[k] = v 

    def get_Variable(self, k): 
     return self.variables[k]  

    def add_gas(self, add): 
     self.variables['gas'] +=add 

def main(): 
    mercedes = Cars(gas = 3) 
    print (mercedes.get_Variable('gas')) 
    mercedes.add_gas(4) 
    print (mercedes.get_Variable('gas')) 
    print ('There are %s gallons of gas in the car.' % mercedes.get_Variable('gas')) 


if __name__ == "__main__": 
    main() 
+0

哦,夥計,我明白我是怎麼搞砸了......好吧,這是有道理的。我總是糾結於語法....謝謝。 – engr007 2013-02-27 17:47:43

+0

如何打印'汽車中有x加侖汽油',其中x是(mercedes.get_Variable('gas'))。我找不到任何地方的語法。 – engr007 2013-02-27 18:19:38

+0

謝謝!現在明白了。 – engr007 2013-02-27 18:46:51

0

於是,我看到了兩個獨立的問題與您的代碼:

  • 在你的錯誤消息,表明該行:

    self.variables['gas'] = 'gas'+add 
    

    在您的代碼中,行是這樣的:

    self.variables['gas'] = gas+add 
    

    這是兩個不同的含義。第一個嘗試將變量add連接到字符串'gas',這將失敗,因爲add是一個整數,Python不會將整數隱式轉換爲字符串(錯誤告訴您這一點)。所以你會想要做'gas' + str(add)

  • 在你main功能,可以調用add_gas方法是這樣的:

    mercedes.add_gas(4) 
    

    但實際上,有兩個參數,addgas定義的方法,所以這將失敗。

我覺得是你想做的事是add增加self.variables['gas']值時,該方法被調用,所以你會想要寫你的方法是這樣的:

def add_gas(self, add): 
    self.variables['gas'] = self.variables['gas'] + add 

注意可以縮短,使用+=運營商只是這樣的:

def add_gas(self, add): 
    self.variables['gas'] += add 

最後,我不知道你爲什麼會想使用字典對於您的語言環境實例變量,但除非您有充分的理由這麼做,爲什麼不直接爲您的車型定義gas屬性?

+0

如何打印'汽車中有x加侖汽油',其中x是(mercedes.get_Variable('gas'))。我找不到任何地方的語法。 – engr007 2013-02-27 18:20:50

+0

我之所以沒有定義房產天然氣,是因爲我的班車比天然氣更復雜...它有很多其他屬性,所以我使用kwargs來添加它們,因爲我也需要它們。否則我會有大量的getters和setter。 – engr007 2013-02-27 18:21:46

+0

您可以使用'print'目前有%s加侖'%mercedes.get_Variable('gas')'。請參閱[字符串格式](http://docs.python.org/2/library/stdtypes.html#string-formatting)。 – poke 2013-02-27 18:26:08