0

我收到一个错误......我知道我做错了什么,但不知道如何解决它。我知道我不能将字符串添加到整数......任何想法,我将不胜感激!

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

2 回答 2

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()
于 2013-02-27T17:43:45.413 回答
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)
    

    但是您实际上使用两个参数定义了该方法,addand gas,因此这将失败。

我认为你想要做的是在调用方法时增加self.variables['gas']add,所以你会想这样写你的方法:

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

请注意,您可以使用+=运算符将​​其缩短为:

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

最后,我不知道您为什么要为您的语言环境实例变量使用字典,但除非您有充分的理由这样做,否则为什么不gas为您的汽车类型定义一个属性?

于 2013-02-27T17:46:47.987 回答