Mercurial > hg > config
annotate python/abstract.py @ 379:61a3c07e9f7a
kill reject files
| author | Jeff Hammel <jhammel@mozilla.com> | 
|---|---|
| date | Thu, 25 Jul 2013 03:36:24 -0700 | 
| parents | fe8befc5bdfc | 
| children | 
| rev | line source | 
|---|---|
| 188 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 1 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 2 def abstractmethod(method): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 3 line = method.func_code.co_firstlineno | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 4 filename = method.func_code.co_filename | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 5 def not_implemented(*args, **kwargs): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 6 raise NotImplementedError('Abstract method %s at File "%s", line %s should be implemented by a concrete class' % (repr(method), filename, line)) | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 7 return not_implemented | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 8 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 9 class AbstractBaseClass(object): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 10 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 11 @abstractmethod | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 12 def foo(self, arg): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 13 """foo does such and such""" | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 14 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 15 @abstractmethod | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 16 def bar(self): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 17 """bar does something else""" | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 18 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 19 class ConcreteClass(AbstractBaseClass): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 20 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 21 def foo(self, arg): | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 22 print 'hello' | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 23 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 24 if __name__ == '__main__': | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 25 c = ConcreteClass() | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 26 c.foo(1) | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 27 a = AbstractBaseClass() | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 28 try: | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 29 a.foo(1) | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 30 except NotImplementedError, e: | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 31 print e | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 32 try: | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 33 a.bar() | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 34 except NotImplementedError, e: | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 35 print e | 
| 189 
fe8befc5bdfc
add another print just for fun
 Jeff Hammel <jhammel@mozilla.com> parents: 
188diff
changeset | 36 c.foo(1) | 
| 188 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 37 a.foo(1) | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 38 | 
| 
5b82653ccda3
add demonstration of abc error
 Jeff Hammel <jhammel@mozilla.com> parents: diff
changeset | 39 | 
