[Level 2] How to verify instance has attribute (variables in global/local) or not.
$ cat ./test1.py
#!/bin/env python
class myClass:
def __init__(self):
self.attr1 = 'a'
self.attr2 = 'b'
def checkAttr(self, sAttr):
return hasattr(self, sAttr)
mc = myClass()
print hasattr(mc, 'attr1')
print hasattr(mc, 'attr2')
print hasattr(mc, 'attr3')
print mc.checkAttr('attr1')
print mc.checkAttr('attr2')
print mc.checkAttr('attr3')
$ ./test1.py True True False True True False$ cat ./test2.py
#!/bin/env python
## cannot extract test locals() in another method! ##
def testExistInGlobal():
# print globals()
# print locals()
print 'a in globals(): %s' % ('Ture' if 'a' in globals() else 'False')
print 'b in globals(): %s' % ('Ture' if 'b' in globals() else 'False')
# print 'a in locals(): %s' % ('Ture' if 'a' in locals() else 'False')
# print 'b in locals(): %s' % ('Ture' if 'b' in locals() else 'False')
def inFunc1():
a=2
print a
print b
testExistInGlobal()
print 'a in locals(): %s' % ('Ture' if 'a' in locals() else 'False')
print 'b in locals(): %s' % ('Ture' if 'b' in locals() else 'False')
def inFunc2(b):
b=3
print a
print b
testExistInGlobal()
print '-' * 20
print 'before assign a=1, b=2'
testExistInGlobal()
print 'a in locals(): %s' % ('Ture' if 'a' in locals() else 'False')
print 'b in locals(): %s' % ('Ture' if 'b' in locals() else 'False')
a=1
b=2
print '-' * 20
print 'after assign a=1, b=2'
testExistInGlobal()
print 'a in locals(): %s' % ('Ture' if 'a' in locals() else 'False')
print 'b in locals(): %s' % ('Ture' if 'b' in locals() else 'False')
print '-' * 20
print 'test in method1, a=2'
inFunc1()
print '-' * 20
print 'test in method2, b=3'
inFunc2(b)
print '-' * 20
print 'back to main'
testExistInGlobal()
print 'a in locals(): %s' % ('Ture' if 'a' in locals() else 'False')
print 'b in locals(): %s' % ('Ture' if 'b' in locals() else 'False')
print a
print b
$ ./test2.py -------------------- before assign a=1, b=2 a in globals(): False b in globals(): False a in locals(): False b in locals(): False -------------------- after assign a=1, b=2 a in globals(): Ture b in globals(): Ture a in locals(): Ture b in locals(): Ture -------------------- test in method1, a=2 2 2 a in globals(): Ture b in globals(): Ture a in locals(): Ture b in locals(): False -------------------- test in method2, b=3 1 3 a in globals(): Ture b in globals(): Ture a in locals(): False b in locals(): Ture -------------------- back to main a in globals(): Ture b in globals(): Ture a in locals(): Ture b in locals(): Ture 1 2Wish this helps. regards, Stanley Huang
Comments
Post a Comment