关于class和__str__

时间:2012-07-08 13:51:05

标签: python string class

当我打印我的类的实例时,我尝试返回一个字符串值。这似乎不应该像我希望的那样工作。

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'

4 个答案:

答案 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在内部调用它。但是,+运算符不使用隐式转换为字符串。