Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

staticmethod decorator seems pointless

I was reading about the @staticmethod in Python when I came across tge following code:

class MyClass:
    my_var = 0

    @staticmethod
    def static_method():
        MyClass.my_var += 1

I just don’t understand exactly why you can write a code like this… Doesn’t it defeat the purpose of this method to be static?

I get it that there’s also the fact that the first parameter won’t be a class/instance reference, but… Still weird to call this decorator like that if I still can access class variables, no?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

And if I can access class variables, why everywhere I read about it says that I cannot, even though I just clearly did with the code above? Is it just because I’m doing it wrong?

>Solution :

The idea that a static method can’t modify class state is based on the idea that the static method doesn’t receive a reference to the class as an argument like a class method does. However, in this case, a reference to the class is provided as a hard-coded value.

One reason for defining a static method rather than a class method is to guarantee that you modify the attribute of a specific class, rather than a possible subclass.

class A:
   my_var = 0

   @classmethod
   def foo(cls):
       cls.my_var += 1

   @staticmethod
   def bar():
       A.my_var += 1


class B(A):
    my_var = 0

A call to B.foo will modify B.my_var, not A.my_var. A call to B.bar will modify A.my_var.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading