-
-
Save namper/2fb994d9db568b827db0f2fbfae66525 to your computer and use it in GitHub Desktop.
Python @Private decorator
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import sys, functools | |
def private(member): | |
@functools.wraps(member) | |
def wrapper(*function_args): | |
myself = member.__name__ | |
caller = sys._getframe(1).f_code.co_name | |
if (not caller in dir(function_args[0]) and not caller is myself): | |
raise Exception("%s called by %s is private"%(myself,caller)) | |
return member(*function_args) | |
return wrapper | |
''' | |
class test: | |
def public_method(self): | |
print('public method called') | |
@private | |
def private_method(self): | |
print('private method called') | |
t = test() | |
t.public_method() | |
t.private_method() | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment