cted in the string "{1}".'
10 .format(', '.join(map(lambda s: '"%s"' % s,
11 words_detected)), st)
12 )
13
14
15 class CleanerMeta(type):
16
17 def __new__(cls, class_name, bases, attrs):
18 detect_sensitive_words(class_name) # 检查类名
19
20 map(detect_sensitive_words, attrs.keys()) # 检查属性名
21
22 print("Well done! You are a polite coder!") # 如无异常,输出祝贺消息
23
24 return super(CleanerMeta, cls).__new__(cls, class_name, bases, attrs)
25 # 重要!这行一定不能漏!!这回调用内建的类构造器来构造类,否则定义好的类将会变成 None
26
27
28 class APIBase(object, metaclass=CleanerMeta):
29
30 pass
31
32
33 a = APIBase()
34 print(a.__class__)
35 print(a.__class__.__class__)
36 print(a.__class__.__class__.__class__)
输出:
Well done! You are a polite coder!
<class '__main__.APIBase'>
<class '__main__.CleanerMeta'>
<class 'type'>
|