I would say:
- 1 card object for all cards, with instance variables for all kind of things. (texts, costs, damage, type like spell or monster).
- 1 array, where you store all the values for each card. E.g: Each X is assigned to one card. Y1 would be the name, Y2 the type, Y3 costs etc.
When *card name* card is drawn, set type to Y2 array position at *card name*. Repeat copy that for all other Y values in the array to assign the instance variables.
I don't know if that's any efficient, I am not a coder. But that's the first way I would think of. ^^