Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Menentukan Sifat Kelas dalam Python: Adakah terdapat penghias @classproperty serupa dengan @classmethod?
Cara Mentakrifkan Sifat Kelas dalam Python
Dalam Python, anda boleh menambah kaedah pada kelas menggunakan penghias @classmethod. Tetapi adakah terdapat mekanisme yang sama untuk menentukan sifat kelas?
Sudah tentu. Python menyediakan penghias @classproperty untuk tujuan ini. Sintaks dan penggunaannya hampir sama dengan @classmethod:
class Example(object): the_I = 10 @classproperty def I(cls): return cls.the_I
Penghias @classproperty mencipta sifat kelas bernama I. Anda boleh mengakses sifat ini terus pada kelas itu sendiri, seperti:
Example.I # Returns 10
Jika anda ingin menentukan penetap untuk harta kelas anda, anda boleh menggunakan penghias @classproperty.setter:
@I.setter def I(cls, value): cls.the_I = value
Kini anda boleh menetapkan sifat kelas secara terus:
Example.I = 20 # Sets Example.the_I to 20
Pendekatan Alternatif: ClassPropertyDescriptor
Jika anda lebih suka pendekatan yang lebih fleksibel, pertimbangkan untuk menggunakan kelas ClassPropertyDescriptor. Begini caranya:
class ClassPropertyDescriptor(object): def __init__(self, fget, fset=None): self.fget = fget self.fset = fset # ... (method definitions) def classproperty(func): return ClassPropertyDescriptor(func)
Dengan pendekatan ini, anda boleh mentakrifkan sifat kelas seperti berikut:
class Bar(object): _bar = 1 @classproperty def bar(cls): return cls._bar
Anda boleh menetapkan sifat kelas menggunakan penetapnya (jika ditakrifkan) atau dengan mengubah suai atribut asasnya:
Bar.bar = 50 Bar._bar = 100
Penyelesaian yang diperluas ini memberikan lebih kawalan dan fleksibiliti apabila bekerja dengan sifat kelas dalam Python.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Sifat Kelas dalam Python: Adakah terdapat penghias @classproperty serupa dengan @classmethod?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!