How to change class object parameters from another module (python)
Question: So I've searched around and couldn't find an answer. I'm looking to change
parameters from an object created in my main file, in a module. For example,
I'm testing this with a simple piece of code here:

-this is my main file, from which i create the objects and define some properties
    
    
    import class_test_2
    
    class dog():
        name=''
        spots=0
    
        def add_spots(self):
            self.spots+=1
    
    def main():
    
        fido=dog()
        fido.name='Fido'
    
        print('Fido\'s spots: ',fido.spots)
    
        fido.add_spots()
    
        print('Fido\'s spots: ',fido.spots)
    
        class_test_2.class_test()
    
        print('Fido\'s spots: ',fido.spots)
    
    
    if __name__=='__main__':
        main()
    

* * *

-this is the module, from which I want to use functions to change the attributes in the main file
    
    
    from class_test_1 import dog
    
    def class_test():
        fido.add_spots()
    

-So my question is how can I do this/why doesn't this piece of code above work? Running the main function on its own shows fido's spots increasing by 1 each time its printed. Running the code calling the module however gives a NameError so my module isn't recognising the class exists even though I've managed to import it. Thanks in advance for any help.


Answer: Your variable "fido" is only defined within your "main" function. You must
provide your "class_test" function with the variable.

For example:

    
    
     class_test_2.class_test(fido)
    

Then your `class_test` function gets an argument. You can choose the name
freely. I used `the_dog` in the example:

    
    
    def class_test(the_dog):
        the_dog.add_spots()
    

In this case `the_dog` points to the same instance of your `dog` class as
`fido`.

