如何在 Python 中装饰一个类?
作者:归人云淡风轻
时间:2023-05-01
浏览:1
它使用额外的Python语句修改旧对象并返回相同的引用。例如,考虑下面的类,它有两个方法:__init__和display。__init__方法在显示输出名称时初始化名称变量:classStudent:def__init__(self,name):self.name=namedefdisplay(self):print('Name:',self.name)要在Python中装饰这个类,我们可以向该类添加新方法或修改现有方法,或者两者都做。此外,在Python中有
本文目录

它使用额外的 Python 语句修改旧对象并返回相同的引用。
例如,考虑下面的类,它有两个方法:__init__和 display。__init__方法在显示输出名称时初始化名称变量:
class Student:
def __init__(self, name):
self.name = name
def display(self):
print('Name:', self.name)要在 Python 中装饰这个类,我们可以向该类添加新方法或修改现有方法,或者两者都做。
此外,在 Python 中有两种方法可以做到这一点,要么使用函数装饰器,要么使用类装饰器。
让我们一个一个看下例子。
使用函数装饰器装饰类
要使用函数装饰器来装饰类,接受类作为参数,修改其代码并在最后返回类。
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
'''如果类中不存在 display 方法,则 newdisplay 将作为 display 方法添加到类中。
- 由于类的引用在装饰器函数中是可用的,我们除了修改现有方法外,还可以为类添加新的属性和方法
使用类装饰器装饰类
要使用类装饰器装饰类,接受类的引用作为参数(在装饰器的__init__方法中),在 __call__方法中修改其代码,最后返回修改后的类的实例。
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
'''这里唯一的区别是我们返回的是对象的引用而不是类引用。
作者最新文章
解决win10运行3DMAX自动重启的方法
2026-10-13 17:08
哔哩哔哩投稿封面上传失败怎么解决
2026-10-13 15:55
漫蛙漫画官网免费漫画入口
2026-10-13 13:19
漫蛙漫画app免费下载安装最新版
2026-10-13 13:18
漫蛙漫画官网登录入口
2026-10-13 13:18
上一篇:
python Tkinter怎么使用
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多










































