Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menambahkan Sifat Dinamik pada Kelas seperti Entri Kamus?

Bagaimana untuk Menambahkan Sifat Dinamik pada Kelas seperti Entri Kamus?

Linda Hamilton
Linda Hamiltonasal
2024-11-12 10:55:03741semak imbas

How to Add Dynamic Properties to Classes like Dictionary Entries?

Menambahkan Sifat Dinamik pada Kelas

Dalam usaha untuk mensimulasikan set hasil pangkalan data menggunakan kelas olok-olok, satu cabaran timbul: bagaimana untuk menetapkan dinamik sifat kepada contoh yang menyerupai kamus. Ini melibatkan penciptaan sifat yang berkelakuan seperti atribut dengan nilai tertentu.

Pada mulanya, pendekatan yang menjanjikan melibatkan penetapan sifat menggunakan:

setattr(self, k, property(lambda x: vs[i], self.fn_readyonly))

Walau bagaimanapun, ini menghasilkan objek harta dan bukannya tingkah laku yang diingini.

Penyelesaian terletak pada menambahkan sifat pada kelas itu sendiri, bukannya kejadian individu. Begini cara ia berfungsi:

class Foo(object):
    pass

foo = Foo()
foo.a = 3
Foo.b = property(lambda self: self.a + 1)
print(foo.b)  # Prints 4

Dalam contoh ini, kami menambah sifat b pada kelas Foo menggunakan deskriptor sifat. Apabila mengakses foo.b, Python memanggil kaedah __get__ deskriptor dan menghantar contoh kelas sebagai hujah. Kaedah __get__ kemudiannya mengembalikan nilai harta, yang dikira sebagai kendiri.a 1.

Sifat menyediakan cara yang mudah untuk mentakrifkan gelagat tersuai untuk atribut, mendedahkan paip sistem OO Python dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Menambahkan Sifat Dinamik pada Kelas seperti Entri Kamus?. 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