Spaces:
Running
Running
| """class tools, including method inspection, class attributes, inheritance relationships, etc.""" | |
| def check_methods(C, *methods): | |
| """Check if the class has methods. borrow from _collections_abc. | |
| Useful when implementing implicit interfaces, such as defining an abstract class, isinstance can be used for determination without inheritance. | |
| """ | |
| mro = C.__mro__ | |
| for method in methods: | |
| for B in mro: | |
| if method in B.__dict__: | |
| if B.__dict__[method] is None: | |
| return NotImplemented | |
| break | |
| else: | |
| return NotImplemented | |
| return True | |