Dengan Python, saya bisa melakukan:
>>> list = ['a', 'b', 'c']
>>> ', '.join(list)
'a, b, c'
Apakah ada cara mudah untuk melakukan hal yang sama ketika saya memiliki daftar objek?
>>> class Obj:
... def __str__(self):
... return 'name'
...
>>> list = [Obj(), Obj(), Obj()]
>>> ', '.join(list)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, instance found
Atau apakah saya harus menggunakan for for loop?
map
ekspresi yang seharusnya kurang dapat dibaca (di bawah).map
solusinya.Konstruktor string bawaan akan secara otomatis memanggil
obj.__str__
:sumber
reduce
adalah salah satu yang dihapus, karena biasanya membuat orang menebak dan dengan demikian tidak "pythonic".map
di sisi lain bukan masalah.solusi lain adalah mengganti operator gabungan dari kelas str.
Mari kita mendefinisikan kelas baru my_string sebagai berikut
Maka Anda bisa melakukannya
dan kamu dapatkan
BTW, dengan menggunakan daftar sebagai nama variabel, Anda mendefinisikan ulang kelas daftar (kata kunci)! Lebih disukai menggunakan nama pengenal lain.
Semoga jawaban saya bermanfaat.
sumber
Saya tahu ini adalah posting yang sangat lama, tapi saya pikir apa yang terlewatkan adalah yang utama
__repr__
, sehingga__repr__ = __str__
, yang merupakan jawaban yang diterima dari pertanyaan ini ditandai duplikat .sumber