A
agupta0318
I am trying unsuccessfully to remove some methods from an instance,
based on values passed in to the constructor as in the following
example:
#===============================================================
class A(object):
def __init__(self, id):
self._id = id
return
def clean(self):
if (self._id == 1):
del self.test1
elif (self._id == 2):
del self.test2
pass
return
def test1(self):
print "in test1"
return
def test2(self):
print "in test2"
return
#=============================================================================
if (__name__ == '__main__'):
try:
a = A(1)
a.clean()
a.test2()
a.test1()
except AttributeError, exc:
import traceback
traceback.print_exc()
pass
#==================================================================
I get the following error:
Traceback (most recent call last):
File "DynamicMethods.py", line 30, in ?
a.clean()
File "DynamicMethods.py", line 11, in clean
del self.test1
AttributeError: test1
With the older python classes I could have done:
self.__class__.__dict__[''test1"] to achieve the desired result.
I appreciate any help you could provide with this.
Thanks.
Amit Gupta
based on values passed in to the constructor as in the following
example:
#===============================================================
class A(object):
def __init__(self, id):
self._id = id
return
def clean(self):
if (self._id == 1):
del self.test1
elif (self._id == 2):
del self.test2
pass
return
def test1(self):
print "in test1"
return
def test2(self):
print "in test2"
return
#=============================================================================
if (__name__ == '__main__'):
try:
a = A(1)
a.clean()
a.test2()
a.test1()
except AttributeError, exc:
import traceback
traceback.print_exc()
pass
#==================================================================
I get the following error:
Traceback (most recent call last):
File "DynamicMethods.py", line 30, in ?
a.clean()
File "DynamicMethods.py", line 11, in clean
del self.test1
AttributeError: test1
With the older python classes I could have done:
self.__class__.__dict__[''test1"] to achieve the desired result.
I appreciate any help you could provide with this.
Thanks.
Amit Gupta