Since you already have a list of people, you can use the function map:
class Pessoa:
def __init__(self, nome, idade):
self.nome = nome
self.idade = idade
p1 = Pessoa('João', 15)
p2 = Pessoa('Maria', 17)
lista_pessoas = [p1, p2]
nomes = ', '.join(map(lambda p: p.nome, lista_pessoas))
print(nomes)
The first parameter passed to map is a lambda: a function that will be applied to each item in the list. In this case, the lambda receives a person and returns their respective name, and does so for each element of the list.
The detail is that the function map returns a iterator. That is, she does not create another list.
Then we use join to join the names, separating them by ', ' (comma and a space). The result is:
João, Maria
If you want to show the ages, just change the lambda for:
idades = ', '.join(map(lambda p: str(p.idade), lista_pessoas))
But how idade is a number, we have to use str to convert it to string. At the end, the string idades will have the value 15, 17.
Another alternative is to use what was suggested in the comments:
nomes = ', '.join(p.nome for p in lista_pessoas)
This code uses the syntax of comprehensilist on, much more succinct and pythonic. And besides, she creates a Generator (that is, it also does not create another list).
For ages, I’d stay:
idades = ', '.join(str(p.idade) for p in lista_pessoas)
You need a string only with all names or all ages?
– Woss
What you want to do, is not clear in the question
– Tmilitino