copy function in class definition in python
Question: Im doing a class for polynomial and i have a problem with a copy function. It
suppose to create a copy of the Poly object and return a reference to the new
Poly object. Im really stuck on this copy idea. Thanks for any help

    
    
    class Poly:
    
        def __init__ (self, p):
            self.a = p
            self.deg= len(p) -1
            if len(p) == 1 and p[0] == 0:
                self.deg = -1
    
        def evalPoly(self,x0):
            ''' evaluates the polynomial at value x'''
            b=0
            for coefficients in reversed(self.a):
                b=b*x0+int(coefficients)
            return b
    
        def polyPrime(self):
            '''replaces the coeffiecients of self with the coefficients           
            of the derivative polynomial '''
            if self.deg == 0:
                return np.zeroes(1,float), 0
            else:
                newdeg=self.deg-1
                p=[i*self.a[i] for i in range(1,self.deg+1)]
                p=str(p)[1: -1]
                p=eval(p)
            return p
    
        def copy(self):
            return Poly(self.a)
    

I'm stuck on how to create a copy of the Poly object and return a reference to
the new Poly object


Answer: I think the problem you are having is that as `self.a` is a list then you are
passing a reference to that list in the instantiation of the new Poly object.

You should copy the list and give that copy to instantiate the object:

    
    
    import copy
    
    class Poly:
        ...
        def copy(self):
            return Poly(copy.copy(self.a))
    

