Probably a better way to do this would be to have an `inplace` argument to \_\_init\_\_ and store this in the Op object and perform a copy of the list when not inplace.

Because otherwise this has a lot of duplicated code that we will have to keep in sync.