It is a chained assignment. You set both size and self.size to the return value of self.GetClientSize().
You can chain assignments with abandon:
>>> foo = bar = spam = eggs = 'frobnicators'
>>> foo
'frobnicators'
>>> bar, spam, eggs
('frobnicators', 'frobnicators', 'frobnicators')
Note that the expression on the right-hand side only is evaluated once, and it's value is assigned to all the left-hand side variables from left to right.
This can most easily be seen if you decompiled the python bytecode:
>>> import dis
>>> def foo():
... bar = baz = eggs = 'spam'
...
>>> dis.dis(foo)
2 0 LOAD_CONST 1 ('spam')
3 DUP_TOP
4 STORE_FAST 0 (bar)
7 DUP_TOP
8 STORE_FAST 1 (baz)
11 STORE_FAST 2 (eggs)
14 LOAD_CONST 0 (None)
17 RETURN_VALUE
DUP_TOP creates an extra reference to the value on the stack (spam), which is stored in bar, then baz is given another duplicated reference, then the value is stored in eggs.