Bagaimanakah Anda Boleh Memanjangkan Jenis Terbina Dalam Python dengan Kaedah Tersuai?

Barbara Streisand
Lepaskan: 2024-10-24 19:27:02
asal
972 orang telah melayarinya

How Can You Extend Python's Built-in Types with Custom Methods?

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!")
Salin selepas log masuk

Untuk menggunakan subkelas ini pada semua kamus akan datang, gantikan jenis dict asal dalam ruang nama terbina dalam :

import __builtin__
__builtin__.dict = MyDict
Salin selepas log masuk

Sekarang, mana-mana kamus yang dicipta akan daripada jenis MyDict dan mempunyai kaedah helloWorld():

my_dict = {}
my_dict.helloWorld()  # Prints "Hello world!"
Salin selepas log masuk

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'
Salin selepas log masuk

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!

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!