Soalan:
Adakah mungkin untuk menggunakan fungsi property() bersama-sama dengan fungsi yang dihiasi dengan @classmethod penghias?
Jawapan:
Python 3.8 dan Lebih Lama:
Untuk Python 3.8 dan lebih awal, penyelesaian yang disyorkan adalah dengan buat harta pada metaclass dan bukannya kelas, kerana sifat beroperasi pada contoh dan bukan kelas. Berikut ialah contoh:
class Foo(object): _var = 5 class __metaclass__(type): # Python 2 syntax for metaclasses def var(cls): return cls._var def var(cls, value): cls._var = value # Python 3 syntax for metaclasses class Meta(type): ... class Foo(metaclass=Meta): ...
Python 3.9 dan Kemudian:
Bermula daripada Python 3.9, adalah mungkin untuk menggunakan kedua-dua @classmethod dan @penghias harta dalam gabungan. Berikut ialah contoh:
class Foo(object): _var = 5 @classmethod @property def var(cls): return cls._var @var.setter def var(cls, value): cls._var = value
Dalam contoh ini, kaedah sifat dicipta pada kelas itu sendiri.
Atas ialah kandungan terperinci Bolehkah Kaedah Kelas Menggunakan Sifat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!