2013-02-27 38 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