[Tutor] How to have unique identifiers for multiple object instances of a given class?
boB Stepp
robertvstepp at gmail.com
Sun Aug 26 23:58:34 EDT 2018
On Sun, Aug 26, 2018 at 6:10 PM Alan Gauld via Tutor <tutor at python.org> wrote:
>
> On 26/08/18 23:38, boB Stepp wrote:
>
> > class SolitaireGame():
> > def __init__(self, name):
> > self.name = name
>
> > Say I go with the aforementioned game with 13 separate scores to keep
> > track of. The names of these games might be "Two_Mastery",
> > "Three_Mastery", ... , "Ace_Mastery". In principle I want 13 objects
> > with each one keeping track of each of the above games. Then I might
> > want to switch to "Spider_Solitaire", keep track of its score, then go
> > to something else, then back to Mastery, etc. How on earth am I to
> > generate unique identifiers for each of these SolitaireGame objects in
> > a rational way, not knowing in advance moment to moment what type of
> > solitaire game I might be playing?
>
> A dictionary of objects keyed by name?
So you are saying do something like:
class SolitaireGame():
def __init__(self, name):
self.name = name
def describe_self(self):
print("This game of solitaire is called", self.name, ".")
game_objects = {}
def make_new_game_object(name):
global game_objects
game_objects[name[ = SolitaireGame(name)
make_new_game_object('Chinese Solitaire')
make_new_game_object('Ace Mastery')
make_new_game_object('King Mastery')
make_new_game_object('Spider')
If I run the above in the interactive interpreter:
3.6.6: game_objects
{'Chinese Solitaire': <__main__.SolitaireGame object at
0x7f3991d5e400>, 'Ace Mastery': <__main__.SolitaireGame object at
0x7f3991d5e470>, 'King Mastery': <__main__.SolitaireGame object at
0x7f3991d5e438>, 'Spider': <__main__.SolitaireGame object at
0x7f3991d5e4e0>}
3.6.6: game_objects['Spider'].describe_self()
This game of solitaire is called Spider.
This would seem to work, though I would have to be very careful to not
allow the user to create a new game with the same name (Now a key.)
which would overwrite an already existing game object.
> If using a GUI add the names to a drop down or listbox
> to ease later selection.
Ultimately I would add a GUI interface.
> Does that work for you?
If what I wrote above describes what you intend, then yes.
> > between them at will. Of course the intent is to persistently store
> > these objects on disk upon program closure.
>
> Maybe JSON for that? Or even a shelve database?
I plan to keep this simple. I will use a ".cfg" file to store game
configuration information and a ".csv" file to store the actual
records of hands played. But I will have to be careful how I generate
the base filenames to avoid duplicates and potential nasty
user-generated names. Though this project is only meant for my use
...
--
boB
More information about the Tutor
mailing list