Sebelum memahami metaclass, mari kita fahami kelas dalam Python terlebih dahulu Dalam kebanyakan bahasa pengaturcaraan, kelas ialah satu set segmen kod yang digunakan untuk menerangkan cara menjana objek. Ini adalah sama dalam Python.
class ObjectCreator(object): pass mObject = ObjectCreator() print(mObject)
Hasil keluaran:
<__main__.ObjectCreator object at 0x00000000023EE048>
Walau bagaimanapun, kelas dalam Python berbeza daripada kebanyakan bahasa pengaturcaraan Dalam Python, kelas boleh difahami sebagai objek. Ya, tidak ada kesilapan di sini, ia adalah objeknya.
Kenapa?
Oleh kerana selagi kelas kata kunci digunakan, jurubahasa Python akan mencipta objek semasa pelaksanaan.
Contohnya:
class ObjectCreator(object): pass
Apabila atur cara menjalankan kod ini, objek akan dicipta dalam ingatan, dan namanya ialah ObjectCreator. Objek (kelas) ini sendiri mempunyai keupayaan untuk mencipta objek (contoh kelas), dan itulah sebabnya ia adalah kelas. Walau bagaimanapun, intipatinya masih menjadi objek, jadi kita boleh melakukan operasi berikut padanya:
class ObjectCreator(object): pass def echo(ob): print(ob) mObject = ObjectCreator() print(mObject) # 可以直接打印一个类,因为它其实也是一个对象 print(ObjectCreator) # 可以直接把一个类作为参数传给函数(注意这里是类,是没有实例化的) echo(ObjectCreator) # 也可以直接把类赋值给一个变量 objectCreator = ObjectCreator print(objectCreator)
Hasil output adalah seperti berikut:
<__main__.ObjectCreator object at 0x000000000240E358> <class '__main__.ObjectCreator'> <class '__main__.ObjectCreator'> <class '__main__.ObjectCreator'>bahagian seterusnya