STTransform is always equivalent to translate( scale( X )). I use the scale and translate properties to generate the complete transform in that order, so it does not matter in what order you set them.
```
tr = STTransform()
# reversing the following two lines has no effect:
tr.scale = (1,2,1)
tr.translate = (10, 0, 0)
```

In contrast, AffineTransform uses scale and translate as methods that multiply the existing matrix by a new scale or transform matrix:
```
tr = AffineTransform()
# Reversing the following two lines does NOT result in the same transform:
tr.scale(1,2,1)
tr.translate(10, 0, 0)
```