2016-05-12 2 views
0

Я не понимаю. Когда я запускаю в этом коде функцию SaveModule.open, она может сэкономить ShoppingCart.items_in_cart в правильной переменной правильно, но не пользователей. Я сделал что-то не так в этом коде?Python не правильно загружает информацию?

(Я понимаю, что это может быть не самый эффективный код в мире, это все еще в стадии разработки. Просто пытается получить все работает первый.)

Я испытал это в IDLE программе, и все работало как это предполагалось, я просто не понимаю, что я сделал не так.

Что касается того, почему я пытаюсь это сделать, это просто вызов, который я поставил перед собой. Больше ничего.

import os 
import linecache 
import ast 
users = {} 
logged_in = False 
mspw = '00415564' 

class ShoppingCart(object): 
    #Creates shopping cart objects for users of our fine website. 
    items_in_cart = {} 
    def __init__(self, customer_name): 
     self.customer_name = customer_name 
    def __repr__(self): 
     return(self.customer_name) 
    def __str__(self): 
     print('Hello ' + self.customer_name) 
     print('You have ' + str(len(self.items_in_cart)) + ' items in your cart.') 
     for item in self.items_in_cart: 
      print('  ' + item, self.items_in_cart[item]) 
     return('Thank you for shopping at Job Simulator!') 
    def add_item(self, product, price): 
     #add a product to the cart 
     if not product in self.items_in_cart: 
      self.items_in_cart[product] = price 
      print(product + ' added.') 
     else: 
      print(product + ' is already in the cart.') 
    def change_price(self, product, price): 
     if product in self.items_in_cart: 
      self.items_in_cart[product] = price 
      print('Price Changed') 
     else: 
      print('Impossible!') 
    def change_item(self, product, newproduct): 
     if product in self.items_in_cart: 
      tempstor = self.items_in_cart[product] 
      del self.items_in_cart[product] 
      self.items_in_cart[newproduct] = tempstor 
      print('Item changed') 
     else: 
      print('Impossible') 
    def remove_item(self, product): 
     #Remove product from the cart. 
     if product in self.items_in_cart: 
      del self.items_in_cart[product] 
      print(product + ' removed.') 
     else: 
      print(product + ' is not in the cart.') 


class UserModule(object): 
    def add_user(usnm, pswd): 
     if logged_in == False: 
      if not usnm in users: 
       users[usnm] = pswd 
       s = True 
      else: 
       s = False 
     else: 
      s = False 
     return s 
    def remove_user(usnm, pswd): 
     if logged_in == False: 
      if usnm in users: 
       if pswd == users[usnm]: 
        del users[usnm] 
        s = True 
       else: 
        s = False 
      else: 
       s = False 
     else: 
      s = False 
     return s 
    def check_users(mst): 
     if mst == mspw: 
      for item in users: 
       print('  ' + item, users[item]) 
     else: 
      print('Need master password') 

class SaveModule(object): 
    def save(file): 
     svflu = open(file + '.sbcu', 'w') 
     svfli = open(file + '.sbci', 'w') 
     svflu.truncate() 
     svfli.truncate() 
     svflu.write(str(users)) 
     svfli.write(str(ShoppingCart.items_in_cart)) 
     svflu.close() 
     svfli.close() 
    def open(file): 
     if os.path.isfile(file + '.sbcu') and os.path.isfile(file + '.sbci'): 
      svfl = open(file + '.sbcu', 'r') 
      users = ast.literal_eval(linecache.getline(file + '.sbcu', 1)) 
      svfl.close() 
      svfl = open(file + '.sbci', 'r') 
      ShoppingCart.items_in_cart = ast.literal_eval(linecache.getline(file + '.sbci', 1)) 
      svfl.close() 
     else: 
      print('This file doesn\'t exits.') 

ответ

0

Я исправил проблему; он был решен путем вложения пользователей переменная внутри модуля UserModule. Я не знаю, почему это исправлено; если кто-нибудь может ответить на это, тогда дайте мне знать.

Смежные вопросы