Bom dia, estou estudando python gostando muito, porem o professor me deu uma projeto para fazer de uma locadora de dvd.
 
	Descric~ao 
	Aqui est~ao as descric~oes das classes envolvidas no sistema. Item oferece uma 
	interface, na forma de uma classe abstrata, representando qualquer item na 
	colec~ao da locadora. Esta interface e fornecida. Um item sempre possui um 
	ttulo, um g^enero, e um identicador inteiro unico, chamado de \barcode". 
	A qualquer tempo, um item pode estar disponvel ou alugado. Se estiver alugado, 
	deve haver uma data de retorno. AbstractItem e uma implementac~ao 
	parcial da interface de um itemi, e tambem e fornecida para voc^e. Devem ser 
	implementadas tr^es subclasses concretas de DVD: DVD, Game, e NewReleaseDVD, 
	descritos com mairoes detalhes, abaixo. 
	1 
	A classe Customer representa um cliente da vdeo locadora. Esta classe 
	esta parcialmente implementada. Um cliente possui uma lista de itens alugados 
	e um balanco devido a locadora. Alugar um item atualiza o objeto 
	Item correspondente, incrementa o balanco do cliente pelo custo do aluguel 
	e adiciona o item a lista do cliente. 
	Retornar um item atualiza o estado do item e o remove da lista do cliente. 
	Alem disso, quaisquer taxas por atraso s~ao adicionadas ao balanco do cliente. 
	Voc^e deve terminar a implementac~ao da classe Customer e implementar duas 
	subclasses, ClubMember e PremierMember, descritos com mairores detalhes, 
	abaixo. Uma VideoStore possui uma lista de items e uma lista de clientes. 
	Esta classe e fornecida para voc^e. há metodos para adicionar items e para 
	adicionar clientes. E possvel procurar um cliente por nome, e procurar itens 
	de acordo com algum criterio arbitrario, implementando a interface Search- 
	Condition. N~ao e necessario fazer nada com esta classe. Ela e fornecida para 
	dar algum contexto de como as outras classes que est~ao sendo implementadas 
	devem ser usadas. A classe abstrata SearchCondition representa um 
	predicado de busca adaptavel. Possui apenas um metodo: 
	de f matches ( s e l f , item ) : 
	que retorna verdadeiro se o item dado satisfaz o criterio de busca, e falso 
	caso contrario. Por exemplo, uma condic~ao de busca com casamento exato 
	do g^enero de um item, poderia ser escrita como: 
	c l a s s GenreSearch ( Sear chCondi t ion ) : 
	i n i t ( s e l f , genr e ) : 
	s e l f . g e n r e = genre 
	matches ( s e l f , item ) : 
	r e turn s e l f . g e n r e == item . getGenre ( ) 
	A classe abstrata (parecido com uma interface do java) SearchCondition 
	e a classe de exemplo GenreSearch s~ao fornecidas. Voc^e deve implementar 
	uma classe adicional TitleKeywordSearch que implementa a classe abstrata 
	SearchCondition. há tambem um tipo Status Exception que estende a 
	classe Exception. Esta classe e fornecida. Varios metodos s~ao especicados 
	para levantar uma StatusException sob certas condic~oes. Para levantar uma 
	excec~ao, deve-se construir um novo objeto de excec~ao. há um argumento 
	opcional do tipo string que e a mensagem que deve aparecer como parte do 
	2 
	stack trace, se a excec~ao ocorrer; isto e util para debugging e estas mensagens 
	podem ser conguradas a gosto. Por exemplo, o metodo setRented de um 
	Item incluira normalmente um teste, como descrito abaixo: 
	i f ( s e l f . i sRent ed ( ) ) : 
	r a i s e StatusExc ept ion (" Item i s a l r e ady r ent ed ") 
	Neste trabalho, n~ao e necessario capturar as excec~oes. Tudo o que e 
	preciso e constru-las e levanta-las (ou simplesmente deixa-las propagaremse, 
	como no exemplo do metodo rentItem, que já esta implementado na classe 
	Customer).
 
	estou tentando implementar o metodo: bringBackItem, mas não estou conseguindo.
 
	Retorna um item que este cliente atualmente alugou e atualiza 
	# O saldo se uma taxa ou crédito atrasado for devido. Se o item puder ser 
	# Devolvido com sucesso, este método atualiza o status do item e remove 
	# Da lista de itens deste cliente. Se o cliente não tiver 
	# O item alugado, uma StatusException é lançada. 
	# @param barcode 
	# Identificador para o item a ser devolvido 
	# @param hoje 
	# A data em que o item está sendo retornado 
	# @throws StatusException 
	# Se este cliente não tiver dado o item alugado
 
	###def bringBackItem(self, barcode, today): 
	  # for item in self.__itemsOut: 
	    #  if barcode == item.getBarcode(): 
	         # TODO