翼度科技»论坛 编程开发 python 查看内容

元类(一)

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
  1. 1 # -*- coding: utf-8 -*-
  2. 2 """
  3. 3 @Time    : 2023-06-25 23:14
  4. 4 @Description :
  5. 5 @Author  : Mr.Gu
  6. 6 """
  7. 7 import time
  8. 8 import types
  9. 9
  10. 10
  11. 11 class Meta(type):
  12. 12     def __new__(cls, name, bases, attrs):
  13. 13         for key, value in attrs.items():
  14. 14             if isinstance(value, types.FunctionType) and not key.startswith("_"):
  15. 15                 attrs[key] = property(value)
  16. 16         return super().__new__(cls, name, bases, attrs)
  17. 17
  18. 18     def __call__(cls, *args, **kwargs):
  19. 19         inst = super().__call__(*args, **kwargs)
  20. 20         inst.created_at = time.time()
  21. 21         return inst
  22. 22
  23. 23
  24. 24 class Valley(metaclass=Meta):
  25. 25     def func(self):
  26. 26         print("testing")
  27. 27
  28. 28
  29. 29 Valley().func
  30. 30 print(Valley().created_at)
复制代码
元类在工作中一般很少用到,除非手写框架
1、__new__创建类时调用
2、__call__创建与初始化类实例时调用
 

来源:https://www.cnblogs.com/shixiaogu/p/17507520.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具