Search code examples
pythonclassstatic

How To Get Class Variables into Static Methods?


So I Have main.py:

import os
import json

class Create_project:
    def __init__(self,version):
        self.version = version        
    
    @staticmethod
    def Name(cls):
        project_name = cls
    
    @staticmethod
    def Res(cls):
        if cls == True:
           os.chdir('Project')
           os.mkdir(f"gyy_RP")
        else:
            pass

if __name__ == "__main__":
    Create_project()

& project.py:

import neptune_lib

neptune_lib.Create_project("1.16.210")
neptune_lib.Create_project.Name("My Addon")
neptune_lib.Create_project.Res(True)

I Want To Create A Directory Named By The User , But I Failed To get project_name to The Res Function.

So How do i get project_name into TheResFunction ???


Solution

  • Why use staticmethods? Just make everything into class methods and you can get it easily.

    Edit: Change your code to

    import os
    import json
    
    class Create_project:
        def __init__(self,version):
            self.version = version
            self.project_name = None        
        
        def Name(self, cls):
            self.project_name = cls
        
        def Res(self, cls):
            if cls == True:
               os.chdir('Project')
               os.mkdir(str(self.project_name))
            else:
                pass
    
    if __name__ == "__main__":
        Create_project()
    

    And call it with:

    import neptune_lib
    
    a = neptune_lib.Create_project("1.16.210")
    a.Name("My Addon") 
    a.Res(True)