Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to modify variables in another python file?

windows 10 - python 3.5.2

Hi, I have the two following python files, and I want to edit the second file's variables using the code in the first python file.

firstfile.py

from X.secondfile import *

def edit():
    #editing second file's variables by user input
if Language == 'en-US':
    print('language is English-us')
elif Language == 'en-UK':
    print('language is English-uk')

secondfile.py

Language = 'en-US'

i can add some variables to it by following code, but how can i edit one ?

with open("secondfile.py","a") as f:
    f.write("Language = 'en-US'")

Any ideas how to do that?

like image 283
Mohammad Zamanian Avatar asked Sep 10 '16 11:09

Mohammad Zamanian


2 Answers

You can embed the Language in a class in the second file that has a method to change it.

Module 2

class Language:
    def __init__(self):
        self.language = 'en-US'
    
    def __str__(self):
        return self.language

    def change(self, lang):
        assert isinstance(lang, str)
        self.language = lang

language = Language()

Then import the "language," and change it with the change method.

Module 1

from module2 import language

print(language)
language.change("test")
print(language)
like image 108
JakeD Avatar answered Sep 29 '22 16:09

JakeD


This can be done to edit a variable in another file:

import X.secondfile
X.secondfile.Language = 'en-UK'

However, I have two suggestions:

  1. Don't use import * - it pollutes the namespace with unexpected names

  2. Don't use such global variables, if they are not constants. Some code will read the value before it is changed and some afterwards. And none will expect it to change.

So, rather than this, create a class in the other file.

class LanguagePreferences(object):
    def __init__(self, langcode):
        self.langcode = langcode

language_preferences = LanguagePreferences('en-UK')
like image 23
zvone Avatar answered Sep 29 '22 17:09

zvone