可以原始「和」被覆蓋? 舉例來說,如果我嘗試做這樣的事情覆蓋內置「和」
class foo():
def __and__(self,other):
return "bar"
這個被輸出
>> foo() and 4
4
>> foo().__and__(4)
'bar'
我的直覺是,內置的,不能被重寫,並不能覆蓋到不會造成混淆。
我想和功能不應該改變,因爲它並不需要是的,因爲它的行爲就像
def and(self,other):
if(not bool(self)):
return self
else:
return other
你能否給我一個兩個操作數都沒有被評估的情況?我想不出一個。 – Doboy 2011-03-28 02:47:16
'x = False和foo()'。如果你寫'foo()'包含一個'print'語句,你可以很容易地看到它永遠不會被調用。如果其中一個操作數爲假,那麼布爾''和'永遠不會成立,所以如果'和'知道第一個操作數是'假',它就不會評估第二個操作數。 '或'是另一種方式:如果第一個操作數是「真」,則不需要評估第二個操作數。這就是所謂的短路,它的副作用有時也是爲了他們自己的緣故:例如,如果arg是空的,則arg = arg或default將賦值arg爲空,或「無」。 – kindall 2011-03-28 02:52:32