Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk menghias kelas dalam Python?

Bagaimana untuk menghias kelas dalam Python?

王林
Lepaskan: 2023-05-26 14:43:06
ke hadapan
1474 orang telah melayarinya

如何在 Python 中装饰一个类?

Ia menggunakan pernyataan Python tambahan untuk mengubah suai objek lama dan mengembalikan rujukan yang sama.

Sebagai contoh, pertimbangkan kelas berikut, yang mempunyai dua kaedah: __init__ dan paparan. Kaedah __init__ memulakan pembolehubah nama apabila memaparkan nama output:

class Student:
def __init__(self, name):
self.name = name
def display(self):
print('Name:', self.name)
Salin selepas log masuk

Untuk menghias kelas ini dalam Python, kita boleh menambah kaedah baharu pada kelas atau mengubah suai kaedah sedia ada, atau kedua-duanya.

Selain itu, terdapat dua cara untuk melakukan ini dalam Python, sama ada menggunakan penghias fungsi atau penghias kelas.

Mari kita lihat contoh satu persatu.

Menghiasi kelas menggunakan penghias fungsi

Untuk menghias kelas menggunakan penghias fungsi, terima kelas sebagai parameter, ubah suai kodnya dan kembalikan kelas pada penghujung.

def mydecorator(student):
#define a new display method
def newdisplay(self):
print('Name: ', self.name)
print('Subject: Programming')
#replace the display with newdisplay
student.display = newdisplay

#return the modified student
return student
@mydecorator
class Student:
def __init__(self, name):
self.name = name
def display(self):
print('Name:', self.name)
obj = Student('Pencil Programmer')
obj.display()
'''
Name: Pencil Programmer
Subject: Programming
'''
Salin selepas log masuk

Jika kaedah paparan tidak wujud dalam kelas, paparan baru akan ditambahkan pada kelas sebagai kaedah paparan.

  • Memandangkan rujukan kelas tersedia dalam fungsi penghias, selain mengubah suai kaedah sedia ada, kami juga boleh menambah sifat dan kaedah baharu pada kelas

Menghiasi kelas dengan penghias kelas

Untuk menghias kelas dengan penghias kelas, terima rujukan kepada kelas sebagai parameter (dalam kaedah __init__ penghias), dalam __call__ Ubah suai kodnya dalam kaedah, dan akhirnya mengembalikan contoh kelas yang diubah suai.

class Mydecorator:
#accept the class as argument
def __init__(self, student):
self.student = student

#accept the class's __init__ method arguments
def __call__(self, name):
#define a new display method
def newdisplay(self):
print('Name: ', self.name)
print('Subject: Python')

#replace display with newdisplay
self.student.display = newdisplay

#return the instance of the class
obj = self.student(name)
return obj
@Mydecorator
class Student:
def __init__(self, name):
self.name = name

def display(self):
print('Name: ', self.name)
obj = Student('Pencil Programmer')
obj.display()
'''
Name: Pencil Programmer
Subject: Python
'''
Salin selepas log masuk

Satu-satunya perbezaan di sini ialah kita mengembalikan rujukan objek dan bukannya rujukan kelas.

Teks asal: ​​https://www.php.cn/link/137ffea9336f8b47a66439fc34e981ee​

Atas ialah kandungan terperinci Bagaimana untuk menghias kelas dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:51cto.com
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