Computer Science, asked by harshithanaick4324, 1 year ago

How to overload python ternary operator?

Answers

Answered by RAJA2006
0

Is it possible to overload the ternary operator in python? Basically what I want is something like:

class A(object):

def __ternary__(self, a, c):

return a + c

a = A()

print "asdf" if a else "fdsa" # prints "asdffdsa"

I'm trying to implement a symbolic package and basically want something that can do things like:

sym = Symbol("s")

result = 1 if sym < 3 else 10

print result.evaluate(sym=2) # prints 1

print result.evaluate(sym=4) # prints 10

Edit: Let me put out a bit more complex example to show how this could be layered upon.

sym = Symbol("s")

result = 1 if sym < 3 else 10

...

something_else = (result+1)*3.5

...

my_other_thing = sqrt(something_else)

print my_other_thing.evaluate(sym=2) # prints sqrt(7) or rather the decimal equivalent

The point is, I don't need to just be able to late evaluate the one ternary operator, I need to take the result and do other symbolic stuff with that before finally evaluating. Furthermore, my code can do partial evaluations where I give it a few bindings and it returns another symbolic expression if it can't evaluate the full expression.

My backup plan is just to directly use the ternary class taking 3 expressions objects that I would need to make anyway. I was just trying to hide the generation of this class with an operator overload. Basically:

a = TernaryOperator(a,b,c)

# vs

b = a if b else c

Answered by Anonymous
0

●The ternary operator cannot be overloaded. Though you can wrap it up in a lambda/function and use it.

●For example,

●result = lambda x: 1 if x < 3 else 10

print(result(2))

print(result(1000))

Similar questions