So assuming a simple version of your Deck
baseclass, inheriting an modifying the list of cards stored in the baseclass could be done something like:
# simple baseclass that contains a list of Card objects
class Deck(object):
def __init__(self):
self.deck = [...] # some list of cards
# a class to hold only even cards
class Even(Deck)
def __init__(self):
# use super to instantiate the baseclass
super(Even,self).__init__(self)
# create a local instance of `deck` that contains only even cards
# the base set of cards can still be acessed via super(Even,self).deck
self.deck = [card for card in self.deck if card.rank() != 2]
EDIT: updating for the added information in the question:
class Deck(list):
def __init__(self):
super(Deck,self).__init__([Card(i) for i in range(52)])
class Even(Deck)
def __init__(self):
super(Even,self).__init__(self)
[self.remove(card) for card in self if card.rank()==2]