Dúvida OO com Python

Pelo que observei ao gerar uma instância de uma classe todos os métodos da classe são recriados em uma posição de memória diferente como no trecho abaixo:

class Foo(): def __init__ (self):     self.x = 10 def getFoo(self):     return x def setFoo(self,xnew):     self.x = xnew  a = Foo() b = Foo()  a.getFoo Out[79]: <bound method Foo.getFoo of <__main__.Foo object at 0x000001C0EF1F6198>>  b.getFoo Out[80]: <bound method Foo.getFoo of <__main__.Foo object at 0x000001C0EF1F6518>> 

Porém quando se está fazendo uma varredura, criando e testando muitos objetos objetos desta classe com diferentes parâmetros, isso pode acabar com a memória fazendo com que a execução demore bastante. Existe alguma forma de criar métodos de instância únicos para a classe? Eu imaginei que fosse o @classmethod (pelo que li em https://python-textbok.readthedocs.io/en/1.0/Classes.html#classmethod) porém quanto testei também não deu certo:

class Foo():     x = 5     def __init__ (self):         self.x = 10     def getFoo(self):         return self.x     @classmethod     def setFoo(cls,xnew):         cls.x = xnew  a = Foo() b = Foo() print(a.x, b.x,Foo.x) #10 10 5  a.setFoo(29) print(a.x,b.x,Foo.x)  #10 10 29  print(a.getFoo == b.getFoo) #False print(a.setFoo == b.setFoo) #True