i'd like to return a new instance of the current class, when an inherited class return it will return the base class instead of the current class

```
class class1:
    def __init__(self):
        self.foo = 1
        self.bar = 2
    def new(self):
        return class1()

class class2(class1):
    def __init__(self):
        super().__init__()

c1 = class1()
c2 = class2()
print(c1.new())
print(c2.new())

```

this returns

<**main**.class1 object at 0x0000027B681E57F0>  

<**main**.class1 object at 0x0000027B681E57F0>

desired result 

<**main**.class1 object at 0x0000027B681E57F0>  

<**main**.class2 object at 0x0000027B681E57F0>