Seymore4Head wrote: > def __str__(self): > s = "Hand contains " > for x in self.hand: > s = s + str(x) + " " > return s > > This is part of a Hand class. I need a hand for the dealer and a hand > for the player. > dealer=Hand() > player=Hand() > This prints out 'Hand contains " foo bar > for both the dealer's hand and the player's hand. > > Is there a way to include "self" in the __string__ so it reads > Dealer hand contains foo bar > Player hand contains foo bar
Not unless you tell the instance what name you want it to use. Instances (objects) have no way of knowing the name of the variable you attach them to. Or even if there is such a variable -- there could be one, or none, or a thousand. Consider: # one variable, one instance dealer = Hand() # three variables, one instance player1 = player2 = player3 = Hand() # make that four variables player4 = player2 # no variable, one instance print Hand() some_list = [1, 2, 3, Hand(), 5] If you ask each instance what their name is, how would they know? The only way is to give them a name when you create them: class Hand: def __init__(self, name): self.name = name dealer = Hand("dealer") player1 = Hand("Bert") player2 = Hand("Ernie") player3 = Hand("Scarface") Now the instances know what their name is, since you've told them, and can use them any way you like: def __str__(self): template = "%s's hand contains: " return (template % self.name) + "King of Spades" -- Steven -- https://mail.python.org/mailman/listinfo/python-list