Apakah Perbezaan antara Kaedah Terikat, Tidak Terikat dan Statik dalam Python?

Barbara Streisand
Lepaskan: 2024-11-15 10:19:02
asal
826 orang telah melayarinya

What are the Differences between Bound, Unbound, and Static Methods in Python?

Perbezaan Kaedah Kelas dalam Python: Terikat, Tidak Terikat dan Statik

Dalam Python, perbezaan antara kaedah terikat, tidak terikat dan statik adalah penting untuk reka bentuk kelas yang berkesan.

Kaedah Terikat dan Tidak Terikat

Tidak seperti kebanyakan bahasa berorientasikan objek lain, kaedah kelas Python tidak statik secara lalai. Apabila contoh kelas memanggil fungsi ahli, ia diterjemahkan ke dalam panggilan kepada kaedah tidak terikat dengan contoh sebagai hujah pertama. Sebagai contoh, pertimbangkan kod berikut:

class Test(object):
  def method_one(self):
    print "Called method_one"
Salin selepas log masuk

Memanggil method_one pada contoh a_test akan menghasilkan:

a_test.method_one()
=> Test.method_one(a_test)
Salin selepas log masuk

Kaedah Statik

Untuk menentukan kaedah statik yang digunakan pada kelas dan bukannya contoh, gunakan penghias @staticmethod. Penghias ini mengarahkan metaclass untuk mencipta kaedah tidak terikat. Contohnya:

class Test(object):
    @staticmethod
    def method_two():
        print "Called method_two"
Salin selepas log masuk

Kini, kedua-dua contoh dan kelas boleh menggunakan method_two:

a_test = Test()
a_test.method_one()
a_test.method_two()
Test.method_two()
Salin selepas log masuk

Memanggil method_two tanpa instance tidak akan menimbulkan ralat, tidak seperti method_one, yang menjangkakan contoh untuk terikat kepadanya.

Atas ialah kandungan terperinci Apakah Perbezaan antara Kaedah Terikat, Tidak Terikat dan Statik dalam Python?. 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