reflection for checking methods

This commit is contained in:
seehi 2024-02-20 12:04:59 +08:00 committed by betterwang
parent 3078362710
commit dd82962937
4 changed files with 27 additions and 2 deletions

View file

@ -0,0 +1,20 @@
"""
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