0

I have a string of an object instance. Is there a way to turn it back into the object?

I've tried ast.literal_eval but because the object is a class I wrote on own it doesn't seem to work.

The class:

class Card(pygame.sprite.Sprite):
    def __init__(self, card_name, player_class):
        """
        class card attributes:
        1) card name
        2) card profile image
        3) card image
        4) card type
        5) card rarity
        """

        super(self.__class__, self).__init__()

        self.card_name = card_name
        try:
            self.card_profile_img = pygame.image.load(card_name + '.png')
        except pygame.error:
            self.card_profile_img = pygame.image.load('beta_pic.png')

        if player_class == 'ironclad':
            with open('ironclad_cards.txt', 'r') as f:
                cards = f.read().split('\n')
                for card in cards:
                    if card.split('$')[0] == card_name:
                        self.card_type = card.split('$')[1]
                        self.card_rarity = card.split('$')[2]
                        self.card_img = pygame.image.load(self.card_rarity + '_' + self.card_type + '.png')
                        self.energy_cost = int(card.split('$')[3])
                        self.card_des = card.split('$')[4]
                        self.card_effect = card.split('$')[5]

        elif player_class == 'silent':
            with open('silent_cards.txt', 'r') as f:
                cards = f.read().split('\n')
                for card in cards:
                    if card.split('$')[0] == card_name:
                        self.card_type = card.split('$')[1]
                        self.card_rarity = card.split('$')[2]
                        self.card_img = pygame.image.load(self.card_rarity + '_' + self.card_type + '.png')
                        self.energy_cost = card.split('$')[3]
                        self.card_des = card.split('$')[4]
                        self.card_effect = card.split('$')[5]

        elif player_class == 'defect':
            with open('defect_cards.txt', 'r') as f:
                cards = f.read().split('\n')
                for card in cards:
                    if card.split('$')[0] == card_name:
                        self.card_type = card.split('$')[1]
                        self.card_rarity = card.split('$')[2]
                        self.card_img = pygame.image.load(self.card_rarity + '_' + self.card_type + '.png')
                        self.energy_cost = card.split('$')[3]
                        self.card_des = card.split('$')[4]
                        self.card_effect = card.split('$')[5]

        self.card_img_rect = self.card_img.get_rect()
        self.card_img_rect.x = 0
        self.card_img_rect.y = 0

I have:

<card.Card instance at 0x02AE7AA8>
Mad Physicist
  • 107,652
  • 25
  • 181
  • 264
David G.
  • 13
  • 2

0 Answers0