Olá Danilo.
Poderia enviar o erro, dessa maneira consigo te ajudar melhor.
Mas acredito que o problema esteja acontecendo por causa da ordem em que você está passando os parâmetro, por exemplo, se o se método estiver escrito dessa maneira:
def transfere(self, conta_saca, conta_deposito,valor):
conta_saca.saca(valor)
conta_deposito.deposita(valor)
Para utiliza-lo você deve seguir a assinatura que você definiu, nesse caso, primeiro passa a conta que vai transferir o valor, depois a conta que vai receber o valor e por ultimo o valor da transferência. Por exemplo:
>>> conta1.transfere(conta2, conta1, 25)
Se eu não respeitar a ordem que eu defini na assinatura, vou receber um erro.
>>> conta1.transfere(25, conta1, conta2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "D:\Documentos\fórum alura\topico-problemas-no-parametro-115594\conta.py", line 16, in transfere
conta_saca.saca(valor)
AttributeError: 'int' object has no attribute 'saca' >>>
E o que esse erro está no dizendo é que "o valor inteiro não tem um atributo chamado 'saca' ". Isso mostra que quando passamos o valor no primeiro parâmetro o nosso método utiliza ele como a variável conta_saca.
Então o importante é que devemos seguir a mesma ordem para passar os parâmetros de quando definimos a assinatura do método.
Uma alternativa é que quando chamamos a função deixemos claro o que cada valor representa em relação ao parâmetro.
>>> conta1.transfere(valor=25, conta_saca=conta1, conta_deposito=conta2)
>>>
Veja nesse caso consigo passar o valor primeiro, mas só porque expliquei para o método onde ele deveria guardar cada valor, que são os parâmetros da função conta_saca, conta_deposito, valor.
Espero ter ajudado, qualquer duvida não hesite em perguntar.
Bons Estudos.