Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Python

Pemrograman Meta Master Python:Teknik Metaclass Tingkat Lanjut

Dengan Python, Pemrograman Meta mengacu pada praktik penulisan kode yang memiliki pengetahuan sendiri dan dapat dimanipulasi. Metaclass adalah alat yang ampuh untuk metaprogramming dengan Python, memungkinkan Anda menyesuaikan cara kelas dibuat dan berperilaku. Dengan menggunakan metakelas, Anda dapat membuat program yang lebih fleksibel dan efisien melalui pembuatan dan refleksi kode dinamis.

Pemrograman meta dengan Python melibatkan teknik seperti dekorator dan metaclass. Dalam tutorial ini, Anda akan mempelajari tentang pemrograman meta dengan kelas meta dengan menjelajahi pembuatan dan refleksi kode dinamis.

Mendefinisikan Metaclass

Pemrograman meta dengan metakelas di Python menawarkan fitur-fitur canggih yang mengaktifkan kemampuan tingkat lanjut pada program Anda. Salah satu fitur tersebut adalah metode __prepare__(), yang memungkinkan penyesuaian namespace tempat badan kelas akan dieksekusi.

Metode ini dipanggil sebelum kode isi kelas dijalankan, menyediakan cara untuk menginisialisasi namespace kelas dengan atribut atau metode tambahan. Metode __prepare__() harus diimplementasikan sebagai metode kelas.

Contoh

Berikut adalah contoh pembuatan metaclass dengan fitur-fitur canggih menggunakan metode __prepare__().

 
class MyMetaClass(type):
 @classmethod
 def __prepare__(cls, name, bases, **kwargs):
 print(f'Preparing namespace for {name}')
 # Customize the namespace preparation here
 custom_namespace = super().__prepare__(name, bases, **kwargs)
 custom_namespace['CONSTANT_VALUE'] = 100 
 return custom_namespace
# Define a class using the custom metaclass
class MyClass(metaclass=MyMetaClass):
 def __init__(self, value):
 self.value = value
 
 def display(self):
 print(f"Value: {self.value}, Constant: {self.__class__.CONSTANT_VALUE}")
# Instantiate the class
obj = MyClass(42)
obj.display()

Keluaran

Saat menjalankan kode di atas, Anda akan mendapatkan hasil berikut −

Preparing namespace for MyClass
Value: 42, Constant: 100

Pembuatan Kode Dinamis dengan Metaclass

Pemrograman meta dengan metaclass memungkinkan pembuatan atau modifikasi kode selama runtime.

Contoh

Contoh ini menunjukkan bagaimana metakelas dalam metaprogramming Python dapat digunakan untuk pembuatan kode dinamis.

class MyMeta(type):
 def __new__(cls, name, bases, attrs):
 print(f"Defining class: {name}") 
 
 # Dynamic attribute to the class
 attrs['dynamic_attribute'] = 'Added dynamically'
 
 # Dynamic method to the class
 def dynamic_method(self):
 return f"This is a dynamically added method for {name}"
 
 attrs['dynamic_method'] = dynamic_method
 
 return super().__new__(cls, name, bases, attrs)
# Define a class using the metaclass
class MyClass(metaclass=MyMeta):
 pass
obj = MyClass()
print(obj.dynamic_attribute) 
print(obj.dynamic_method())

Keluaran

Saat mengeksekusi kode di atas, Anda akan mendapatkan hasil berikut −

Defining class: MyClass
Added dynamically
This is a dynamically added method for MyClass

Refleksi dan Metaprogramming

Pemrograman meta dengan metakelas sering kali melibatkan refleksi, memungkinkan introspeksi dan modifikasi atribut dan metode kelas pada waktu proses.

Contoh

Dalam contoh ini, metakelas MyMeta memeriksa dan mencetak atribut MyClass selama pembuatannya, menunjukkan bagaimana metakelas dapat melakukan introspeksi dan memodifikasi definisi kelas secara dinamis.

class MyMeta(type):
 def __new__(cls, name, bases, dct):
 # Inspect class attributes and print them
 print(f"Class attributes for {name}: {dct}")
 return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=MyMeta):
 data = "example"

Keluaran

Saat mengeksekusi kode di atas, Anda akan mendapatkan hasil berikut −

Class attributes for MyClass: {'__module__': '__main__', '__qualname__': 'MyClass', 'data': 'example'}

Python

  1. Pernyataan Python Print():Cara Mencetak dengan Contoh
  2. Contoh Fungsi Python:Panggilan, Indentasi, Argumen &Nilai Pengembalian
  3. Python - Pengambilan Keputusan
  4. Daftar Python
  5. Python RegEx
  6. Fungsi Python
  7. Modul waktu Python
  8. Python - Loop
  9. Enumerate() Fungsi dalam Python:Loop, Tuple, String (Contoh)
  10. Python Vs Ruby:Perbedaan antara Ruby dan Python