Class python中的求和
我得到了一个错误…我知道我做错了什么,但不知道如何修复它。我知道我不能给整数加字符串…如果有任何想法,我将不胜感激Class python中的求和,class,python-3.x,Class,Python 3.x,我得到了一个错误…我知道我做错了什么,但不知道如何修复它。我知道我不能给整数加字符串…如果有任何想法,我将不胜感激 self.variables['gas'] = 'gas'+add TypeError: Can't convert 'int' object to str implicitly 我的代码: class Cars: def __init__(self, **kwargs): self.variables = kwargs
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()
您的方法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()
因此,我发现您的代码有两个独立的问题:
- 在错误消息中,您显示了这一行:
在代码中,行是这样的:self.variables['gas'] = 'gas'+add
这是两种不同的含义。第一种方法尝试将变量self.variables['gas'] = gas+add
压缩到字符串add
中,该操作将失败,因为'gas'
是一个整数,Python不会隐式地将整数转换为字符串(错误告诉您)。因此,您需要执行add
“gas”+str(add)
- 在
函数中,调用main
方法如下:add\u gas
mercedes.add_gas(4)
但实际上,您使用两个参数定义了该方法,def add_gas(self, add): self.variables['gas'] = self.variables['gas'] + add
和add
,因此这将失败gas
add
增加self.variables['gas']
值,因此您希望这样编写您的方法:
mercedes.add_gas(4)
def add_gas(self, add):
self.variables['gas'] = self.variables['gas'] + add
请注意,您可以使用+=
操作符将其缩短为:
def add_gas(self, add):
self.variables['gas'] += add
最后,我不知道你为什么要对你的语言环境实例变量使用字典,但是除非你有很好的理由这么做,为什么不为你的车型定义一个
gas
属性呢?你的回溯和你的示例代码不匹配。哦,伙计,我明白我是怎么搞砸的了……好吧,这是有道理的。我总是在语法上纠结…谢谢你。我怎么能在x所在的位置打印“目前车里有x加仑的汽油”(mercedes.get_Variable('gas'))。我在任何地方都找不到此语法。如何打印“车内当前有x加仑汽油”,其中x是(mercedes.get_变量('gas'))。我在任何地方都找不到这个的语法。我之所以不定义属性gas,是因为我的类车比gas更复杂…它有许多其他属性,因此,我正在使用kwargs添加它们,因为我也需要它们……否则我会有大量的getter和setter。您可以使用print'当前有%s加仑“%mercedes.get_Variable('gas')
。另外,在Python中,您不需要编写显式的getter和setter方法,只需直接访问属性。因此,您可以使用mercedes.gas
或mercedes.color
等。此外,如果您的类具有如此多(未知)的属性,您应该重新考虑是否正确设计了应用程序。类在属性方面不应该如此“灵活”。你实现它的方式,它不仅仅是一本字典。完全同意你的观点。