Warum erhalte ich
Code: Alles auswählen
>>> def __and__(self,other): return min(self,other)
...
>>> 5 & 9
1
>>> 5 & 3
1
Was verstehe ich hier falsch?
Code: Alles auswählen
>>> def __and__(self,other): return min(self,other)
...
>>> 5 & 9
1
>>> 5 & 3
1
Code: Alles auswählen
class ganz(int):
def __and__(self,other): return min(self,other)
def __rand__(self,other): return min(other,self)
a = ganz(5)
print(min(a,5),'=',a&5,'=', 5&a)
print(min(a,7),'=',a&7,'=', 7&a)
Es geht hier um Konventionen bzw Wiederverwendung von bereits bekanntem. Da werden 99% aller Programmierer wohl zustimmen, dass es keinen eigenen Operator für min- oder max-Operationen braucht, weil das einfach total ungewöhnlich wäre, zumal eine Doppeldeutigkeit zum bitweisen Und entstehen würde (BlackJack spielte darauf bereits an). Es steht dir aber natürlich frei, deine eigene "Interpretation" zu implementieren. Nur dann fang nicht gleich an, patzig zu werden, wenn die Leute darüber verwundert sind. NIemand sagt, dass man am Besten überhaupt keine Operatoren verwenden sollte. Das hast du jetzt "weitergesponnen", evtl weil dir das mathematische Hintergrundwissen fehlt (was ja generell nicht sooo dramatisch wäre - nicht, dass du diese Aussage auch noch in den falschen Hals bekommst...).Goswin hat geschrieben:@BlackJack: Tja, wenn ich es recht bedenke, sind die Operatoren + und * eigentlich auch überflüssig, Funktionen wie plus() und mul() sollten genügen. Vor allem würde dann die Funktionalität der Klammern so richtig ausgeschöpft, zum totalen Ergötzen aller Lisp-Programmierer...