class AssetStore(dict):
def __init__(self, size):
super().__init__()
self.size = size
self.load_assets()
def load_assets(self):
spritesheet_list = spritesheets.Spritesheets("assets/spritesheets")
for asset_type, asset_dict in spritesheet_list.sheets.items():
for asset_name, asset_data in asset_dict.items():
asset_spritesheet = asset_data.get("spritesheet")
if asset_spritesheet:
if asset_type not in self:
self[asset_type] = {}
new_asset = Asset(
asset_type,
asset_name,
animation=AnimationComponent(
asset_spritesheet.get_sprites(self.size, self.size),
asset_type,
asset_spritesheet.time_per_frame,
)
)
self[asset_type][asset_name] = new_asset
for root, _, files in os.walk("assets/static"):
for file in files:
if file.split(".")[-1] == "png":
path_tokens = root.split("/")
asset_type = path_tokens[-2]
asset_name = path_tokens[-1]
if asset_type not in self:
self[asset_type] = {}
map = pygame.image.load(os.path.join(root, file)).convert_alpha()
new_asset = Asset(asset_type, asset_name, image=map)
self[asset_type][asset_name] = new_asset
def __getitem__(self, key):
return super().__getitem__(key)
I want this class to be accessed like an object without having to explicitly instantiate it. I want to be able to import it and use it like: AssetStore["some_asset"] without needed to (re)initialize the object explicitly. Is this possible? Bad practice? Thanks