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 listdo 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!