Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import re
- class Anchor:
- def __is_private_method(self, name):
- patt = r'_([A-Z]{1}\w+)__(\w+)'
- match = re.search(patt, name)
- if match is not None:
- class_name, method_name = match.group(1), match.group(2)
- if class_name != 'Anchor':
- return class_name, method_name
- return None, None
- def transformPrivateInPublic(self):
- for attribute in dir(self):
- class_name, method_name = self.__is_private_method(attribute)
- if class_name is not None:
- private_function = getattr(self, f'_{class_name}__{method_name}')
- setattr(self, method_name, private_function)
- def leak_private_methods(Parent):
- class Child(Parent):
- def __init__(self, *args, **kwargs):
- super().__init__(*args, **kwargs)
- self.transformPrivateInPublic()
- return Child
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement