Kaedah Sihir Python

Patricia Arquette
Lepaskan: 2024-12-31 09:03:14
asal
434 orang telah melayarinya

Python

1 -> __new__(cls) Kaedah

Kaedah __new__ dipanggil apabila objek baharu dicipta dalam Python. Ia bertanggungjawab untuk membuat dan mengembalikan tika baharu kelas. Kaedah ini biasanya digunakan apabila anda ingin menyesuaikan penciptaan objek, seperti untuk corak singleton, caching atau mengurus memori.

Bilakah __baru__ Dipanggil?

Kaedah __new__ dipanggil sebelum __init__ dan digunakan untuk mencipta objek baharu. Berikut ialah susunan acara biasa apabila anda membuat objek baharu:

  1. __baru__: Mencipta objek (peruntukan memori).
  2. __init__: Memulakan objek (menyediakan atribut).

Gunakan Kes untuk __new__:

  1. Corak Singleton: Corak Singleton memastikan bahawa hanya satu contoh kelas wujud. Dalam kes ini, __new__ menyemak sama ada tika sudah wujud dan menggunakannya semula, bukannya membuat yang baharu.
   class Singleton:
       _instance = None

       def __new__(cls):
           if cls._instance is None:
               cls._instance = super(Singleton, cls).__new__(cls)
           return cls._instance

   s1 = Singleton()
   s2 = Singleton()
   print(s1 is s2)  # True, both are the same instance
Salin selepas log masuk
  1. Caching Objek: Jika anda ingin cache objek berdasarkan syarat tertentu, anda boleh menggunakan __new__ untuk menyemak sama ada objek sudah wujud (cth., dalam kamus) sebelum mencipta yang baharu. Ini boleh membantu mengoptimumkan penggunaan memori.
   class CachedObject:
       _cache = {}

       def __new__(cls, value):
           if value in cls._cache:
               return cls._cache[value]
           obj = super().__new__(cls)
           cls._cache[value] = obj
           return obj

   obj1 = CachedObject("hello")
   obj2 = CachedObject("hello")
   print(obj1 is obj2)  # True, the same object is reused
Salin selepas log masuk
  1. Pengurusan Memori:
    Jika anda ingin mengawal peruntukan memori objek (cth., untuk mengoptimumkan penggunaan memori atau mengurus objek besar), __new__ boleh digunakan untuk menyesuaikan cara objek dicipta.

  2. Objek Kekal:
    __new__ selalunya digunakan dengan objek tidak berubah seperti tupel dan rentetan. Sebagai contoh, apabila anda ingin mencipta objek tidak berubah tersuai, anda akan mengatasi __new__ untuk memastikan ia dibuat dengan betul.

   class MyTuple(tuple):
       def __new__(cls, *args):
           return super().__new__(cls, args)

   t = MyTuple(1, 2, 3)
   print(t)  # (1, 2, 3)
Salin selepas log masuk

Secara ringkasnya:

  • __new__ dipanggil apabila objek sedang dibuat dan bertanggungjawab untuk memulangkan tika kelas.
  • Ia berguna untuk mengoptimumkan penciptaan objek, melaksanakan corak seperti Singleton, mengurus cache objek atau bahkan menyesuaikan peruntukan memori proses.

Atas ialah kandungan terperinci Kaedah Sihir Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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