目前我在python中编码数字ATM。当我想创建一个具有可自定义余额值的用户时,我遇到了这个问题,但是在另一个python脚本文件中(让我们调用这个文件B)。在主脚本文件的函数中,它更改导入的值。问题是文件B中的值不会改变。我该怎么做才能完成这项工作?
所以有些变量是瑞典语。希望它不要打扰!
档案A
def overfor():
overforingsInput = float(input('Hur mycket vill du överföra?\n'))
if User1.saldo - overforingsInput > 0:
User1.saldo - overforingsInput
print '-', overforingsInput, 'kr\n', 'Ditt saldo är nu', User1.saldo, 'kr'
档案B
class User1:
userName = 'felsaf'
userPin = 1234
saldo = 150
答案 0 :(得分:0)
只需导入其他模块而不是变量:
a.py:
balance = 4711
b.py:
# do NOT use:
from a import balance
balance = balance + 1
# DO use:
import a
a.balance = a.balance + 1
但是模块a
中的方法可能比仅使用其他模块全局变形更合适:
a.py:
_balance = 4711
def get_balance():
return _balance
def set_balance(new_balance):
_balance = new_balance
或在并发环境中:
from threading import Lock
_balance_lock = Lock()
class BalanceStale(Exception):
pass
def set_balance_if_known_value_is_still_current(old_value, new_value):
with _balance_lock:
if _balance != old_value:
raise BalanceStale('{} != {}'.format(_balance, old_value))
else:
_balance = new_value