Я занимаюсь основной практикой для Python. Здесь я определяю 3 класса.
Теперь мне нужно передать экземпляр первого класса в другой класс и использовать его в последнем.
Я написал код, как показано ниже:
#defining first class:
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 to add elements to existing dictionary of above class
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():
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 to testing the above functionality
class Test_Inventory_Add_Stock:
m = ''
def setup_class():
m = MobileInventory({'iPhone Model xy': 100, 'Xiaomi Model YA': 1000, 'Nokia Model Zs': 25})
print(m.balance_inventory) # giving Output {'iPhone Model xy': 100, 'Xiaomi Model YA': 1000, 'Nokia Model Zs': 25}
def test_add_new_stock_as_dict():
add_stock( m, {'iPhone Model X': 50, 'Xiaomi Model Y': 2000, 'Nokia Model A': 10})
Test_Inventory_Add_Stock.setup_class()
Test_Inventory_Add_Stock.test_add_new_stock_as_dict()
Вышеприведенное сообщение об ошибке 'NameError: имя' m 'не определено' для метода test_add_new_stock_as_dict.
Почему это не берет m, когда я объявляю это в классе?
как можно использовать MobileInventory.balance_inventory непосредственно в классе add_stock? Я пытался это дает ошибку.
Ожидаемое:
Мне нужно удалить NameError.
И любой способ использовать MobileInventory.balance_inventory (то есть другую ссылку на класс) непосредственно в классе без экземпляра этого