Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah Perbezaan Antara Kaedah Kelas Terikat, Tidak Terikat dan Statik dalam Python?

Apakah Perbezaan Antara Kaedah Kelas Terikat, Tidak Terikat dan Statik dalam Python?

DDD
DDDasal
2024-11-12 10:16:02683semak imbas

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

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

Dalam Python, kaedah kelas boleh dikategorikan kepada tiga jenis: terikat, tidak terikat dan statik. Memahami perbezaan antara jenis ini adalah penting untuk reka bentuk kelas yang berkesan dan interaksi objek.

Kaedah Terikat

Kaedah terikat dikaitkan dengan contoh tertentu kelas. Apabila dipanggil, hujah pertama terikat secara automatik kepada contoh panggilan. Ini membenarkan akses kepada atribut dan kaedah khusus contoh dalam pelaksanaan kaedah. Dalam contoh yang disediakan, method_one ialah kaedah terikat:

class Test(object):
    def method_one(self):
        print("Called method_one")

Apabila dipanggil melalui contoh, kaedah terikat berkelakuan seperti yang diharapkan:

a_test = Test()
a_test.method_one()  # Output: Called method_one

Kaedah Tidak Terikat

Tidak terikat kaedah tidak dikaitkan dengan mana-mana contoh khusus kelas. Apabila dipanggil, hujah pertama tidak terikat secara automatik pada contoh, dan mereka tidak boleh mengakses data khusus contoh. Dalam contoh, method_two ialah kaedah tidak terikat:

class Test(object):
    def method_two():
        print("Called method_two")

Percubaan untuk menggunakan kaedah tidak terikat melalui kejadian mengakibatkan TypeError kerana tiada tika disediakan:

a_test = Test()
a_test.method_two()  # Error: TypeError: method_two() takes no arguments (1 given)

Kaedah Statik

Kaedah statik tidak dikaitkan dengan mana-mana contoh atau kelas dan berkelakuan seperti fungsi biasa. Mereka boleh diakses terus dari kelas atau menggunakan contoh, tetapi mereka tidak mempunyai akses yang wujud kepada data khusus contoh. Kaedah statik biasanya digunakan untuk fungsi utiliti atau operasi peringkat kelas:

class Test(object):
    @staticmethod
    def method_two():
        print("Called method_two")

Kaedah statik boleh digunakan pada kejadian dan kelas itu sendiri:

a_test = Test()
a_test.method_two()  # Output: Called method_two
Test.method_two()  # Output: Called method_two

Atas ialah kandungan terperinci Apakah Perbezaan Antara Kaedah Kelas Terikat, Tidak Terikat dan Statik dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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