Rumah >pembangunan bahagian belakang >Tutorial Python >Bolehkah Kaedah Kelas Menggunakan Sifat dalam Python?

Bolehkah Kaedah Kelas Menggunakan Sifat dalam Python?

Barbara Streisand
Barbara Streisandasal
2024-11-28 09:01:15372semak imbas

Can Class Methods Use Properties in Python?

Menggunakan Sifat dengan Kaedah Kelas

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!

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