MetaGPT
1"""class tools, including method inspection, class attributes, inheritance relationships, etc."""
2
3
4def check_methods(C, *methods):
5"""Check if the class has methods. borrow from _collections_abc.
6
7Useful when implementing implicit interfaces, such as defining an abstract class, isinstance can be used for determination without inheritance.
8"""
9mro = C.__mro__
10for method in methods:
11for B in mro:
12if method in B.__dict__:
13if B.__dict__[method] is None:
14return NotImplemented
15break
16else:
17return NotImplemented
18return True
19