After a quick glance I see there are a few blocks that are repeated. They can be put into functions instead to reduce repetition and make it more readable. The sections are:
1)
if(ip[0] == 0):
if( self.player_card[0] == 'A of spades' or self.player_card[0] == 'A of hearts' or
self.player_card[0] == 'A of diamonds' or self.player_card[0] == 'A of clubs' or
self.player_card[1] == 'A of spades' or self.player_card[1] == 'A of hearts' or
self.player_card[1] == 'A of diamonds' or self.player_card[1] == 'A of clubs'):
values['A']=1
ip[0] = 1
print "Yipee ! Its BlackJack"
player_bank.add_money((gamebet2)*2.5)
gamebet1 = player_bank.get_money()
print "Your Balance is : %s "%(gamebet1)
time.sleep(7)
continue
print "Yipee ! You Win !"
player_bank.add_money((gamebet2)*2)
gamebet1 = player_bank.get_money()
print "Your Balance is : %s "%(gamebet1)
time.sleep(7)
print '\nDealers Cards are :'
print self.dealer_card
print '\nYour Cards are : '
print self.player_card
Also making the dealer and player into their own classes would at least help with readability and logically grouping your methods, since their methods are both currently in the Black_Jack_Gameplay class. With their similarities you could even find a way to use one class as both, or make one a parent class and one a child class (so you can practice some inheritance).
As a side note, if you use github and don't mind your practice programs being open source, there are a few free automated code review tools that can pick out things like repeated code and bad practices for you.