I am trying to understand the following python snippet:
 x = SomeObject
 x = SomeClass(some_input)(x)
Can anyone shed some light on what is going on here?
I am trying to understand the following python snippet:
 x = SomeObject
 x = SomeClass(some_input)(x)
Can anyone shed some light on what is going on here?
 
    
    It can be simplified to the following (assuming that the auxiliary variables y and z are not used by surrounding code):
y = SomeObject
z = SomeClass(some_input)
x = z(y)
 
    
    Extending others response will try to give you a more general answer, on how Python will solve that statement
x = SomeClass(some_input)(x)
First Python's interpreter will try solve the statement after the = and then assign it to x, so this leave us with_
SomeClass(some_input)(x)
In this statement there are two main elements the SomeClass instation and the call for the result instance that should be a callable)
SomeClass(some_input):  (x)
#---instantiation----:--call--
It will solve first the left-side to determine what should be called, in the left-side We have a Class instantiation, it means that Python interpreter will call the SomeClass.__init__(...) method with the arguments (some_input).  This involves that if some_input is a call of a method, instantiation, formula or so itself, it will try to solve that first.
SomeClass(some_input) # => <new object>
This <new_object> is the one who will be called with the arguments (x) and this is possible because the SomeClass can (and should in this example) be callable just with implementing the __call__ method as you would do with __init__, as example:
class Add:
    def __init__(self, num1, num2):
        self.num1 = num1
        self.num2 = num2
        print "Sum of", self.num1,"and",self.num2, "is:"
    def __call__(self):
        return (self.num1 + self.num2)
add = Add(1,2)
print add()
+More info about objects being callables
note: The reference <new_object>, as it not bound with any variable, will be lost after the last statement.
