我想,一個類,其實例調用的時候直接就好像他們從整型,浮點,STR繼承返回值等我想象它的一些重載函數???:實例返回值(不是實例)時直接調用
class A(object):
def __init__(self, value):
self.value = value
def somefunction(self):
if isintance(self.value, int):
return 5
else:
return 'something else'
def __???__(self):
return self.value
a = A(2)
a + 5 # 7
a.somefunction() # 5
a = A('foo')
a + "bar" # 'foobar'
a.somefunction() # 'something else'
我不能簡單地子INT的值可以是不同類型的。
這是可行的嗎?也許有一個很好的理由,這是無法完成的,但已經很晚了,我想不起來。提前致謝。
'打印了'不會打印'2'或'foo',但是。我不確定OP是否可以。 –
@Lev Levitsky:這是一個不同的要求。 'print'將對象轉換爲可讀的字符串。您可以使用'__repr__'方法將對象轉換爲* technical *字符串表示形式,或使用'__str__'方法將其轉換爲*可讀*字符串表示形式。 '__str__'方法被'print'自動調用,或者你可以使用內建的'str()'函數調用'__str__'。 – pepr
我理解這個問題的方式是'了'應該在任何情況下_evaluate to_'2'(或''foo''),無論是增加還是其他什麼東西。 –