Как разрешить Ошибка атрибута Python - у объекта 'str' нет атрибута 'balance_inventory' - PullRequest
0 голосов
/ 29 сентября 2019

Мой код выдает следующие ошибки:

Ошибка 1:

{'iPhone Model xy': 100, 'Xiaomi Model YA': 1000, 'Nokia Model Zs': 25} iPhone Model X AttributeError Traceback (most recent call last) <ipython-input-51-e83a253ecf45> in <module> 50 51 Test_Inventory_Add_Stock.setup_class() ---> 52 Test_Inventory_Add_Stock.test_add_new_stock_as_dict()

Ошибка 2:

AttributeError: 'str' object has no attribute 'balance_inventory' on Test_Inventory_Add_Stock.test_add_new_stock_as_dict()

Может кто-нибудь, пожалуйста, помогите мне, как решить эту ошибку?

class InsufficientException(Exception):
  pass
class MobileInventory:

    def __init__(self, inventory=None):
        if inventory == None:
            balance_inventory = {}
        elif not isinstance(inventory, dict):
            raise TypeError("Input inventory must be a dictionary")
        elif not (set(map(type, inventory)) == {str}):
            raise ValueError("Mobile model name must be a string")
        elif [True for i in inventory.values() if (not isinstance(i, int) or i < 1)]:
            raise ValueError("No. of mobiles must be a positive integer")
        self.balance_inventory = inventory
class add_stock():

    def __init__(self, m, new_stock):
        if not isinstance(new_stock, dict):
            raise TypeError("Input stock must be a dictionary")
        elif not (set(map(type, new_stock)) == {str}):
            raise ValueError("Mobile model name must be a string")
        elif [True for i in new_stock.values() if (not isinstance(i, int) or i < 1)]:
            raise ValueError("No. of mobiles must be a positive integer")
        for key, value in new_stock.items():
            print(key)
            if key in m.balance_inventory.keys():
                x = m.balance_inventory[key] + value
                m.balance_inventory[key] = x
            else:
                m.balance_inventory.update({key: value})
class Test_Inventory_Add_Stock:

    def setup_class():
        m = MobileInventory({'iPhone Model xy': 100, 'Xiaomi Model YA': 1000, 'Nokia Model Zs': 25})
        print(m.balance_inventory) 

    def test_add_new_stock_as_dict():
        o={'iPhone Model X': 50, 'Xiaomi Model Y': 2000, 'Nokia Model A': 10}
        add_stock( m, o)
Test_Inventory_Add_Stock.setup_class()
Test_Inventory_Add_Stock.test_add_new_stock_as_dict()
...