0

クラスのインスタンスを出力するときに文字列値を返そうとします。それは私が望むようには機能しないようです。

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

4 に答える 4

3

明示的に文字列に変換してみてください:

print str(new) + '.kine'

または、フォーマット文字列を使用することもできます。

print '{}.kine'.format(new)
于 2012-07-08T13:53:51.463 に答える
2

Python は、個々の項目ではなく、式全体の結果を印刷する前に文字列に変換します。連結する前に、オブジェクト インスタンスを文字列に変換します。

print str(new) + '.kine'

Python は厳密に型指定された言語であり、「+」記号などの演算子を使用すると、アイテムが自動的に文字列に変換されません。

于 2012-07-08T13:54:01.337 に答える
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
于 2012-07-08T13:54:48.407 に答える
0

定義が機能print newすることを確認してください。.__str__()printそれを内部的に呼び出します。ただし、+演​​算子は文字列への暗黙的な変換を使用しません。

于 2012-07-08T16:02:58.890 に答える