Olá Janderson, tudo certo?
Na verdade, as properties tem relação com o conceito de encapsulamento. Sugiro você rever as aulas Encapsulamento e Usando Propriedades do curso Python3: Introdução a Orientação a Objetos.
Elas não fazem com que a classe Playlist
seja iterável. Segundo a PEP 234, o que faz uma classe ser iterável é implementar um dos seguintes métodos:
- An object can be iterated over with for if it implements __iter__() or __getitem__().
- An object can function as an iterator if it implements next().
Portanto, precisa implementar __iter__()
ou __getitem()__
, além do método __next()__
. Este é um assunto um pouco mais avançado mas eu indico a leitura da PEP 234 após você finalizar o curso.
No exemplo da aula, o que é iterável é o parâmetro programas
da classe Playlist
- na verdade, é esperado que se passe um objeto iterável no parâmetro programas
. Veja que foi passado um objeto do tipo list
no lugar deste parâmetro para a classe Playlist,
e o objeto list
do python é iterável. Note também que você poderia passar um objeto do tipo inteiro no lugar do parâmetro progamas
da classe Playlist
e, neste caso, ele não seria iterável e geraria outros erros já que o método len()
não aceita um objeto do tipo inteiro.
Não sei se ficou confuso. Caso a dúvida permaneça não deixe de perguntar.
Espero ter ajudado e bons estudos!