title: Python static method wrapper is unnecessary?
body: <p>So I've known about static methods for a while in python and I knew you could use the @staticmethod wrapper but do you really need it if your function has at least one argument? I believe it is likely much better practice but what does it actually do? Because if you write a function with the wrapper and then remove the wrapper it still functions exactly the same. I don't think this is intentional I believe it has to do with how instance functions expect self as the first argument and python by default will pass the instance as first argument. If you have at least one argument you pass the function though it appears you don't even need the wrapper so is the wrapper just for when you have no arguments? (I would never actually use this if I make a static method I would use the wrapper for anyone reading the code's sanity just curious though) Here's an example that I would've thought would error, but it doesn't.</p>
  
  <pre><code>class Me:
      def __init__(self, name, age, weight, height):
          self.name = name
          self.age = age
          self.weight = weight
          self.height = height
  class Bot1:
      def presentPerson(me):
          print(
              f"Your name is {me.name} and you are {str(me.age)}. You weigh {str(me.weight)} and is about {str(me.height)} feet tall.")
  MySelf = Me("Hoax", 16, 50, 5.5)
  Bot1.presentPerson(MySelf)
  </code></pre>