Bagaimana untuk Mencetak Semua Contoh Kelas Python?

Susan Sarandon
Lepaskan: 2024-11-05 09:08:02
asal
238 orang telah melayarinya

How to Print All Instances of a Python Class?

Mencetak Contoh Tertentu Kelas dalam Python

Apabila mentakrifkan kelas Python, ia boleh berguna untuk mencipta fungsi yang mengeluarkan setiap kejadian kelas dalam format tersuai. Terdapat pelbagai pendekatan untuk mencapai matlamat ini.

Menggunakan Pengumpul Sampah

Satu pilihan melibatkan penggunaan pengumpul sampah:

<code class="python">import gc

for obj in gc.get_objects():
    if isinstance(obj, some_class):
        dome_something(obj)</code>
Salin selepas log masuk

Walau bagaimanapun, kaedah ini boleh menjadi lembap apabila berurusan dengan banyak objek dan hanya terpakai untuk jenis dalam kawalan anda.

Menggunakan Mixin dan WeakRefs

Sebagai alternatif, anda boleh melaksanakan mixin dan rujukan lemah seperti berikut:

<code class="python">from collections import defaultdict
import weakref

class KeepRefs(object):
    __refs__ = defaultdict(list)

    def __init__(self):
        self.__refs__[self.__class__].append(weakref.ref(self))

    @classmethod
    def get_instances(cls):
        for inst_ref in cls.__refs__[cls]:
            inst = inst_ref()
            if inst is not None:
                yield inst</code>
Salin selepas log masuk

Pendekatan ini menyimpan rujukan sebagai rujukan lemah dalam senarai. Untuk memastikan kecekapan, pertimbangkan untuk membersihkan weakrefs selepas lelaran, terutamanya apabila berurusan dengan penciptaan dan pemadaman contoh yang kerap. Juga, ambil perhatian bahawa teknik ini terhad kepada kelas di bawah kawalan anda.

Format khusus untuk tika percetakan boleh dilaksanakan melalui gelung untuk tersuai. Melaksanakan format cetakan ini ditinggalkan sebagai latihan untuk pemahaman lanjut.

Atas ialah kandungan terperinci Bagaimana untuk Mencetak Semua Contoh Kelas Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!