ToB企服应用市场:ToB评测及商务社交产业平台

标题: 钩子函数 [打印本页]

作者: 莱莱    时间: 2022-11-15 10:40
标题: 钩子函数
控制子类的的创建

1、元类

  这种方式可能是最常见的也是我们最先知晓的,当然这种方式可能需要我们对元类有比较深入的了解,所以引入了下面的这种方式
2、钩子函数

  __init__subclass__,字面意思,父类实现了该双下方法,其后凡是继承他的派生类,都会触发此方法,进行派生类的初始化,实现派生类属性的增加及修改
  1. 1 class Meta:
  2. 2     def __init_subclass__(cls, **kwargs):
  3. 3         # 改变子类行为,增加类属性
  4. 4         cls.origin_val = "只有永不遏制的奋斗"
  5. 5         for k in kwargs:
  6. 6             setattr(cls, k, kwargs[k])
  7. 7
  8. 8         # 增加类方法
  9. 9         def overwrite():
  10. 10             print("测试")
  11. 11
  12. 12         setattr(cls, "func", overwrite)
  13. 13
  14. 14
  15. 15 class A(Meta, name="g", age=26):
  16. 16     ...
  17. 17
  18. 18
  19. 19 class B(Meta):
  20. 20     ...
  21. 21
  22. 22
  23. 23 if __name__ == '__main__':
  24. 24     print(A.origin_val, A.name, A.age)
  25. 25     A.func()
  26. 26     print(A.__dict__)
  27. 27     print(B.__dict__)
复制代码
output: 
  只有永不遏制的奋斗 g 26
  测试
  {'__module__': '__main__', '__doc__': None, 'origin_val': '只有永不遏制的奋斗', 'name': 'g', 'age': 26, 'func': }
  {'__module__': '__main__', '__doc__': None, 'origin_val': '只有永不遏制的奋斗', 'func': }
 另外补充一句:今年的新书《python工匠...》目前浅看了三章,一个词,相见恨晚,感兴趣我觉得是可以学习学习的

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4