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

Bolehkah Kaedah Kelas Menggunakan Sifat dalam Python?

Barbara Streisand
Lepaskan: 2024-11-28 09:01:15
asal
282 orang telah melayarinya

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):
    ...
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan