Memperluas Jenis Python Terbina dalam dengan Kaedah Tersuai
Dalam Python, jenis terbina dalam seperti dict dan str adalah tidak berubah dan don 't membenarkan penambahan kaedah langsung. Walau bagaimanapun, adalah mungkin untuk mencapai kefungsian yang serupa dengan mensubkelaskan jenis terbina dalam dan menggantikannya dalam ruang nama global.
Sebagai contoh, katakan anda ingin menambah kaedah helloWorld() kepada jenis dict. Walaupun ini tidak boleh dilaksanakan dengan pengubahsuaian langsung, anda boleh mensubkelas dict dan mentakrifkan kaedah dalam subkelas:
class MyDict(dict): def helloWorld(self): print("Hello world!")
Untuk menggunakan subkelas ini pada semua kamus akan datang, gantikan jenis dict asal dalam ruang nama terbina dalam :
import __builtin__ __builtin__.dict = MyDict
Sekarang, mana-mana kamus yang dicipta akan daripada jenis MyDict dan mempunyai kaedah helloWorld():
my_dict = {} my_dict.helloWorld() # Prints "Hello world!"
Walau bagaimanapun, ambil perhatian bahawa objek yang dicipta melalui sintaks literal (cth., {}) akan tetap daripada jenis vanila dict dan tidak akan mempunyai kaedah tersuai:
vanilla_dict = {} vanilla_dict.helloWorld() # AttributeError: 'dict' object has no attribute 'helloWorld'
Pendekatan ini menyediakan cara untuk melanjutkan jenis terbina dalam dengan kaedah tersuai, tetapi ia bukan tanpa hadnya . Contohnya, objek sintaks literal kekal vanila dan subkelas tidak mewarisi sebarang atribut atau kaedah tersuai yang ditambahkan pada jenis induk.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Memanjangkan Jenis Terbina Dalam Python dengan Kaedah Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!