Yes, those two classes would do the same.
However, now imagine a subtype of that class:
class Bar (Foo):
pass
Now calling Bar.create_new
does something different. For the static method, you get a Foo
. For the class method, you get a Bar
.
So the important difference is that a class method gets the type passed as a parameter.