From ae01635c994a6a22040b6ee5717105780d03bb6d Mon Sep 17 00:00:00 2001 From: "chandan.goyal" Date: Wed, 12 Feb 2025 00:39:55 +0530 Subject: [PATCH] Added abstraction class to make sure base classes implement the necessary function --- python/item.py | 37 ++++++++++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/python/item.py b/python/item.py index e9278c1a..17f1e4f0 100644 --- a/python/item.py +++ b/python/item.py @@ -1,21 +1,25 @@ +from abc import ABC, abstractmethod + from python.helper import decrease_quality, increase_quality -class Item: - def __init__(self, name, sell_in, quality): - self.name = name - self.sell_in = sell_in - self.quality = quality +class Item(ABC): + @abstractmethod + def __init__(self): + pass + + @abstractmethod def update_quality(self): """Update the quality of an item""" pass - def __repr__(self): - return "%s, %s, %s" % (self.name, self.sell_in, self.quality) - class RegularItem(Item): + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality def update_quality(self): """Update the quality of an item""" @@ -24,12 +28,20 @@ class RegularItem(Item): class Sulfuras(Item): + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality def update_quality(self): pass class Backstage(Item): + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality def update_quality(self): if self.sell_in <= 0: @@ -40,11 +52,14 @@ class Backstage(Item): self.quality = increase_quality(quality=self.quality, increase_quality_by=2) else: self.quality = increase_quality(quality=self.quality) - self.sell_in = self.sell_in - 1 class AgedBrie(Item): + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality def update_quality(self): self.quality = increase_quality(quality=self.quality) @@ -52,6 +67,10 @@ class AgedBrie(Item): class Conjured(Item): + def __init__(self, name, sell_in, quality): + self.name = name + self.sell_in = sell_in + self.quality = quality def update_quality(self): self.quality = decrease_quality(quality=self.quality, sell_in=self.sell_in, decrease_quality_by=2)