当我打印我的类的实例时,我尝试返回一个字符串值。这似乎不应该像我希望的那样工作。
class oObject (object):
def __init__(self, value):
self.value = value
def __str__(self):
return str(self.value)
def __repr__(self):
return str(self.value)
new = oObject(50)
# if I use print it's Okay
print new
# But if i try to do something like that ...
print new + '.kine'
答案 0 :(得分:3)
尝试显式转换为字符串:
print str(new) + '.kine'
或者您可以使用格式字符串:
print '{}.kine'.format(new)
答案 1 :(得分:2)
Python在打印之前将整个表达式的结果转换为字符串,而不是单个项目。在连接之前将对象实例转换为字符串:
print str(new) + '.kine'
Python是一种强类型语言,在使用“+”符号等运算符时,不会自动将项目转换为字符串。
答案 2 :(得分:2)
覆盖__add__
:
class oObject (object):
def __init__(self, value):
self.value = value
def __str__(self):
return str(self.value)
def __repr__(self):
return str(self.value)
def __add__(self,val):
return str(self.value)+val
new = oObject(50)
'''if I use print it's Okay'''
print new
'''But if i try to do something like that ...'''
print new + '.kine' #prints 50.kine
答案 3 :(得分:0)
尝试print new
查看您的.__str__()
定义是否有效。 print
在内部调用它。但是,+
运算符不使用隐式转换为字符串。