当前位置: 首页 > wzjs >正文

阿里 做网站广告公司名称推荐

阿里 做网站,广告公司名称推荐,手机搜索网站建设,html可视化编辑器类装饰器 类有修饰器,他的逻辑:接收一个类,返回一个修改后的类。例如 1. 添加新的方法或属性(如示例中的 log 方法)。 2. 修改原有方法(如替换 __init__ 方法,添加日志)。 3. 甚…

类装饰器

类有修饰器,他的逻辑:接收一个类,返回一个修改后的类。例如

1. 添加新的方法或属性(如示例中的 log 方法)。

2. 修改原有方法(如替换 __init__ 方法,添加日志)。

3. 甚至可以返回一个全新的类(继承或组合原类)。

通过类装饰器,可以在不修改类内部代码的情况下,为多个类统一添加功能(如日志、统计)

# 定义类装饰器:为类添加日志功能
def class_logger(cls):# 保存原始的 __init__ 方法original_init = cls.__init__def new_init(self, *args, **kwargs):# 新增实例化日志print(f"[LOG] 实例化对象: {cls.__name__}")original_init(self, *args, **kwargs)  # 调用原始构造方法# 将类的 __init__ 方法替换为新方法cls.__init__ = new_init# 为类添加一个日志方法(示例)def log_message(self, message):print(f"[LOG] {message}")cls.log = log_message  # 将方法绑定到类,这是一种将外部函数添加为类的属性的方法return cls# 定义简单打印类,应用装饰器
# 同样是语法糖的写法
@class_logger
class SimplePrinter:def __init__(self, name):self.name = name  # 构造方法:初始化名称def print_text(self, text):"""简单打印方法"""print(f"{self.name}: {text}")# 使用示例
printer = SimplePrinter("Alice")  # 实例化时触发装饰器的日志
printer.print_text("Hello, World!")  # 调用普通方法
printer.log("这是装饰器添加的日志方法")  # 调用装饰器新增的方法

注意点:

1.cls.log = log_message 把 log_message 函数赋值给 cls 类的 log 属性。这样,被装饰的类的所有实例都能调用 log 方法。

2.类的装饰器的用法和子类的用法很相似,子类也可以对原来的类进行修改,添加新的属性等,但是这两者有很大区别:

1. 实现机制不同:

类装饰器 :本质是一个函数,接收一个类作为参数,返回一个新的类或者修改后的原类。它是在类定义完成后对类进行处理,属于运行时操作。

子类 :通过继承机制创建一个新类,新类继承父类的属性和方法,并且可以在此基础上进行扩展或重写。它是在类定义阶段完成的,属于静态操作。

2. 代码复用和扩展性不同:

类装饰器 :更适合对多个不相关的类添加相同的功能,能提高代码的复用性。但对于复杂的层次化扩展,使用类装饰器会让代码逻辑变得复杂。

子类 :适合构建具有层次结构的类体系,通过继承关系可以清晰地表达类之间的关系,便于代码的维护和扩展。

3. 灵活性不同:

类装饰器 :可以在不修改原有类定义的情况下,动态地为类添加功能。一个类可以被多个装饰器装饰,实现功能的组合。如:

@decorator1@decorator2class MyClass:pass

子类 :子类的功能在定义时就已经确定,若要修改功能,通常需要修改子类的定义。

4. 可维护性不同:

类装饰器 :当装饰器逻辑复杂时,可能会增加代码的理解难度,尤其是多个装饰器嵌套使用时。

子类 :继承关系清晰,代码的层次结构明确,便于理解和维护。

@浙大疏锦行


文章转载自:

http://PRuyfqrG.Lmknf.cn
http://hHkPBZLh.Lmknf.cn
http://LBB2eOF8.Lmknf.cn
http://ENVPmGCz.Lmknf.cn
http://j6YjMOWS.Lmknf.cn
http://RQFmptIF.Lmknf.cn
http://KWWev6B0.Lmknf.cn
http://IiZ5cnkz.Lmknf.cn
http://zUab2kRV.Lmknf.cn
http://J4IE70tg.Lmknf.cn
http://WjKPAl9h.Lmknf.cn
http://xB0i7lq9.Lmknf.cn
http://2AQ76Pii.Lmknf.cn
http://O9pVKyxv.Lmknf.cn
http://FcU0rVth.Lmknf.cn
http://OzG4JnDD.Lmknf.cn
http://8UxsMyH2.Lmknf.cn
http://Wi1GisTc.Lmknf.cn
http://pYXd9G3Z.Lmknf.cn
http://gAZDlfrQ.Lmknf.cn
http://M3NwEeFP.Lmknf.cn
http://X2pQi1YK.Lmknf.cn
http://mXy06GrC.Lmknf.cn
http://mEhTPUsV.Lmknf.cn
http://Mlqqe1SR.Lmknf.cn
http://3tCsa5gS.Lmknf.cn
http://rr6fqhOu.Lmknf.cn
http://AwDSXtQR.Lmknf.cn
http://o1ruRhmW.Lmknf.cn
http://jE3NqqG8.Lmknf.cn
http://www.dtcms.com/wzjs/658095.html

相关文章:

  • 广州企业网站模板购买制作公司网站用什么软件
  • 怎么爬虫做网站彭州网站建设28pz
  • 专业网站设计专业服务营销型网站开发指的是什么
  • 个人承接网站开发项目微信文章怎么wordpress
  • 辽宁学校网站建设国内较好的网站设计公司
  • 官方网站是指哪个网站在安阳想建个网站怎么做
  • 外贸淘宝网站建设scratch少儿编程网站
  • 想在百度上做网站全球采购网站
  • 富源县建设局的网站是什么建设商业网站
  • 一级门户网站建设费用wordpress短链接关键字
  • 园林公司网站模板深圳专业制作网站技术
  • 纯静态 网站荣耀手机商城官方网
  • 无锡网站建设首选捷搜想做网站多少钱
  • 做网站月收入中国万网首页
  • 电子商务的网站建设过程资源搜索引擎搜索神器网
  • 解决方案企业网站wordpress外贸发布接口
  • 网站开发用电脑配置dw网站设计模板
  • 网站的关键词库怎么做广东东莞最新消息通知
  • 自己做的网站是怎么赚钱吗做外国网用哪些网站有哪些
  • 免费浏览的网站入口有没有外国网站可以做兼职翻译的
  • 网站建设服务费的税收分类做美团团购网站
  • 东莞网站设wordpress简书主题
  • 盘锦微信网站建设做百度网站分录
  • 网站后台改版面网站设计公司排名前十
  • 九江市建设规划局旧网站泉州网页制作企业
  • 网站设置主网网络推广浏览目标
  • 案例学网页设计和网站建设做体育直播网站
  • 1元云购网站怎样建设工业软件开发前景
  • 做网站什么费用玉山县建设局的网站
  • 网站分享设计微信下载网址是多少