Idea to support public/private.
Brian Allen Vanderburg II
BrianVanderburg2 at aim.com
Thu Jan 22 17:16:13 EST 2009
There was a small error in setprivate/getprivate:
import sys
import inspect
def get_private_codes(class_):
codes = []
for i in class_.__dict__:
value = class_.__dict__[i]
if inspect.isfunction(value):
codes.append(value.func_code)
return codes
def get_protected_codes(class_, codes=None):
if codes is None:
codes = []
for i in class_.__bases__:
get_protected_codes(i, codes)
for i in class_.__dict__:
value = class_.__dict__[i]
if inspect.isfunction(value):
codes.append(value.func_code)
return codes
class Test(object):
def __init__(self):
self.protected = 45
self.private = 34
def setprotected(self, value):
frame = sys._getframe(1)
if frame.f_code in get_protected_codes(self.__class__):
self.__protect_value_ZR20 = value
else:
raise "Protected Write Error"
def getprotected(self):
frame = sys._getframe(1)
if frame.f_code in get_protected_codes(self.__class__):
return self.__protect_value_ZR20
else:
raise "Protected Read Error"
protected = property(getprotected, setprotected)
def setprivate(self, value):
frame = sys._getframe(1)
if frame.f_code in get_private_codes(Test):
self.__private_value_ZR20 = value
else:
raise "Private Write Error"
def getprivate(self):
frame = sys._getframe(1)
if frame.f_code in get_private_codes(Test):
return self.__private_value_ZR20
else:
raise "Private Read Error"
private = property(getprivate, setprivate)
class Test2(Test):
def __init__(self):
self.protected = 1
self.private = 1
a=Test()
b=Test2()
#print a.private
#a.private = 1
#print a.protected
#a.protected = 1
More information about the Python-list
mailing list