Trik Python: Menggunakan kelas data dengan medan(default_factory=...)

WBOY
Lepaskan: 2024-08-31 06:01:02
asal
816 orang telah melayarinya

Python Trick: Using dataclasses with field(default_factory=...)

Modul kelas data Python memudahkan penciptaan kelas yang digunakan untuk menyimpan data.

Walaupun kebanyakan orang tahu tentang penggunaan asas, terdapat medan ciri yang kurang dikenali(default_factory=...) yang boleh menjadi sangat berguna untuk mengendalikan nilai lalai dalam jenis boleh ubah.


Bagaimana Ia Berfungsi

Apabila mentakrifkan kelas data, anda mungkin mahu menggunakan nilai lalai boleh ubah, seperti senarai atau kamus.

Menggunakan lalai boleh ubah secara langsung boleh menyebabkan tingkah laku yang tidak dijangka disebabkan oleh cara argumen lalai dikongsi merentas kejadian.

Fungsi default_factory menyediakan cara yang bersih untuk mengendalikan lalai boleh ubah.

Ini contoh mudah:

from dataclasses import dataclass, field
from typing import List


@dataclass
class Student:
    name: str
    grades: List[int] = field(default_factory=list)  # Use default_factory for mutable default


# Create new Student instances
student1 = Student(name="Alice")
student2 = Student(name="Bob", grades=[90, 85])

# Modify student1's grades
student1.grades.append(95)

print(student1)  # Output: Student(name='Alice', grades=[95])
print(student2)  # Output: Student(name='Bob', grades=[90, 85])


# Output:
# Student(name='Alice', grades=[95])
# Student(name='Bob', grades=[90, 85])
Salin selepas log masuk

Dalam contoh ini, gred dimulakan dengan senarai kosong untuk setiap tika Pelajar baharu.
Menggunakan medan(default_factory=list) memastikan bahawa setiap kejadian mendapat senarai tersendiri, mengelakkan perangkap lalai boleh ubah dikongsi.


Mengapa Ia Sejuk

Ciri default_factory sangat berharga untuk mengelakkan isu biasa dengan argumen lalai boleh ubah.

Ia membantu memastikan setiap tika kelas data mempunyai nilai lalainya sendiri, menjadikan kod anda lebih mudah diramal dan mengelakkan pepijat halus yang berkaitan dengan keadaan kongsi.

Atas ialah kandungan terperinci Trik Python: Menggunakan kelas data dengan medan(default_factory=...). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!