My goal was to get my hands dirty in OOP by designing and using classes and getting started with inheritance and other OOP concepts.
I have written a very small code to play a card Game called "War". The rules are simple. Each person playing the game is given 1 card. The person with the highest card wins. I am not worrying too much about Ties right now. My code does work but I wanted feedback on my OOP usage.
import itertools import random class Cards: def __init__(self): self.suits = ['Spades','Hearts','Diamonds','Clubs'] self.values = range(1,14) self.ActualCards =  #Empty List to Append for Card in itertools.product(self.suits,self.values): self.ActualCards.append(Card) #Cartesian Product to Create Deck def GetRandomCard(self): RandomNumber = random.randint(0,51) CardToBeReturned = self.ActualCards[RandomNumber] #Generates Random Card return(CardToBeReturned) class Player: def __init__(self,ID,Card): self.PlayerID = ID self.CardForPlayer = Card class Game: def __init__(self,NameOfGame): self.name = NameOfGame class SimpleWar(Game): def __init__(self,NumberOfPlayers): self.NumberOfPlayers = NumberOfPlayers self.PlayerList =  def StartGame(self): DeckOfCards = Cards() for playerID in range(0,self.NumberOfPlayers): CardForPlayer = DeckOfCards.GetRandomCard() #Deal Card to Player NewPlayer = Player(playerID,CardForPlayer) #Save Player ID and Card self.PlayerList.append(NewPlayer) self.DecideWinner() def DecideWinner(self): WinningID = self.PlayerList #Choose Player 0 as Potential Winner for playerID in self.PlayerList: if(playerID.CardForPlayer>WinningID.CardForPlayer): WinningID = playerID #Find the Player with Highest Card print "Winner is Player "+str(WinningID.PlayerID) print "Her Card was "+ str(WinningID.CardForPlayer) + " of " + str(WinningID.CardForPlayer) if __name__=="__main__": NewGame = SimpleWar(2) NewGame.StartGame()