[Python-checkins] python/nondist/sandbox/parrotbench b5.py, 1.1, 1.2 out5, 1.1, 1.2

gvanrossum at users.sourceforge.net gvanrossum at users.sourceforge.net
Wed Dec 31 01:16:49 EST 2003


Update of /cvsroot/python/python/nondist/sandbox/parrotbench
In directory sc8-pr-cvs1:/tmp/cvs-serv20090
Modified Files:
	b5.py out5 
Log Message:
More fun with classes.
Index: b5.py
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/parrotbench/b5.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** b5.py	31 Dec 2003 05:39:55 -0000	1.1
--- b5.py	31 Dec 2003 06:16:46 -0000	1.2
***************
*** 14,21 ****
 f(*args)
 except exc:
! pass
 else:
 raise AssertionError("%s not raised by %s%r",
! exc.__name, f.__name__, args)
 
 def check_functions():
--- 14,23 ----
 f(*args)
 except exc:
! if __debug__:
! if show:
! print "%s%r raised %s" % (f.__name__, args, exc.__name__)
 else:
 raise AssertionError("%s not raised by %s%r",
! exc.__name__, f.__name__, args)
 
 def check_functions():
***************
*** 160,163 ****
--- 162,176 ----
 check(type(object), type)
 check(type(lambda: None), type(check_functions))
+ class C(object):
+ pass
+ class MC(type):
+ pass
+ class D:
+ __metaclass__ = MC
+ class E(object):
+ __metaclass__ = MC
+ check(type(C), type)
+ check(type(D), MC)
+ check(type(E), MC)
 
 check(unicode("abc"), u"abc")
***************
*** 176,192 ****
 def check_descriptors():
 
! class C(object):
 
 def getx(self):
! return self._x
 def setx(self, x):
! self._x = x
 def delx(self):
! del self._x
 x = property(getx, setx, delx)
 xx = property(getx)
 
! def f(*args):
! return list(args)
 fc = classmethod(f)
 fs = staticmethod(f)
--- 189,238 ----
 def check_descriptors():
 
! class C0(object):
! 
! def __getattribute__(self, name):
! if name == "spam":
! raise IndexError("no way")
! return super(C0, self).__getattribute__(name)
! 
! class C(C0):
! 
! hello = 42
! 
! def __new__(cls, *args):
! if args:
! return None
! return super(C, cls).__new__(cls)
! 
! def __init__(self):
! self.__dict__["foo"] = 42
! self.spam = 42
! 
! def __setattr__(self, name, value):
! if name == "foo":
! raise RuntimeError("forget it")
! super(C, self).__setattr__(name, value)
! 
! def __getattr__(self, name):
! if name == "bar":
! return self.foo
! raise AttributeError(name)
! 
! def __getattribute__(self, name):
! if name == "hello":
! return "booh"
! return super(C, self).__getattribute__(name)
 
 def getx(self):
! return self.__x
 def setx(self, x):
! self.__x = x
 def delx(self):
! del self.__x
 x = property(getx, setx, delx)
 xx = property(getx)
 
! def f(*args, **kwds):
! return list(args), dict(kwds)
 fc = classmethod(f)
 fs = staticmethod(f)
***************
*** 199,220 ****
 return s
 
! c1 = C()
! exception(AttributeError, getattr, c1, "x")
! exception(AttributeError, getattr, c1, "xx")
! exception(AttributeError, setattr, c1, "xx", 42)
! setattr(c1, "x", 42)
! check(c1.x, 42)
! check(c1._x, 42)
! check(c1.xx, 42)
! exception(AttributeError, delattr, c1, "xx")
! del c1.x
! exception(AttributeError, getattr, c1, "x")
! exception(AttributeError, getattr, c1, "xx")
! exception(AttributeError, delattr, c1, "x")
 
! check(c1.f(42), [c1, 42])
! check(c1.fc(42), [C, 42])
! check(c1.fs(42), [42])
! check(repr(c1), "<C object>")
 
 def main():
--- 245,312 ----
 return s
 
! def checks():
! check(C(1), None)
! c1 = C()
! exception(AttributeError, getattr, c1, 'booh')
! exception(AttributeError, getattr, c1, "x")
! exception(AttributeError, getattr, c1, "xx")
! exception(AttributeError, setattr, c1, "xx", 42)
! setattr(c1, "x", 42)
! check(c1.x, 42)
! check(c1._C__x, 42)
! check(c1.xx, 42)
! exception(AttributeError, delattr, c1, "xx")
! del c1.x
! exception(AttributeError, getattr, c1, "x")
! exception(AttributeError, getattr, c1, "xx")
! check(getattr(c1, "x", None), None)
! check(getattr(c1, "xx", None), None)
! exception(AttributeError, delattr, c1, "x")
 
! check(c1.f(42), ([c1, 42], {}))
! check(c1.fc(42, foo=42), ([C, 42], {"foo": 42}))
! check(c1.fs(42, a=1, b=2), ([42], {'a': 1, 'b': 2}))
! check(repr(c1), "<C object>")
! 
! check(getattr(c1, 'foo'), 42)
! check(getattr(c1, 'bar'), 42)
! exception(RuntimeError, setattr, c1, "foo", 42)
! c1.bar = "hello"
! check(c1.bar, "hello")
! exception(IndexError, getattr, c1, "spam")
! check(getattr(c1, "hello"), "booh")
! B = C.__bases__[-1]
! save = B.__getattribute__
! del B.__getattribute__
! check(c1.spam, 42)
! check(getattr(c1, "hello"), "booh")
! save2 = C.__getattribute__
! del C.__getattribute__
! check(c1.hello, 42)
! C.__getattribute__ = save2
! B.__getattribute__ = save
! exception(IndexError, getattr, c1, "spam")
! exception(IndexError, getattr, c1, "spam", None)
! check(getattr(c1, "hello"), "booh")
! 
! checks()
! checks()
! class A(object):
! pass
! class B(object):
! def __getattribute__(self, name):
! if name == "spam":
! raise IndexError("no way")
! return super(B, self).__getattribute__(name)
! C.__bases__ = (A, B)
! checks()
! 
! c2 = C()
! c2.x = 42
! check(c2.x, 42)
! check(c2._C__x, 42)
! c2.__class__ = C0
! check(getattr(c2, 'x', None), None)
! check(c2._C__x, 42)
 
 def main():
Index: out5
===================================================================
RCS file: /cvsroot/python/python/nondist/sandbox/parrotbench/out5,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** out5	31 Dec 2003 05:39:55 -0000	1.1
--- out5	31 Dec 2003 06:16:46 -0000	1.2
***************
*** 116,132 ****
 <type 'type'> == <type 'type'>
 <type 'function'> == <type 'function'>
 u'abc' == u'abc'
 u'abc' == u'abc'
 u'abc\xff' == u'abc\xff'
 u'abc\xff' == u'abc\xff'
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 [('a', 'd'), ('b', 'e'), ('c', 'f')] == [('a', 'd'), ('b', 'e'), ('c', 'f')]
 [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')] == [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
 42 == 42
 42 == 42
 42 == 42
! [<C object>, 42] == [<C object>, 42]
! [<class '__main__.C'>, 42] == [<class '__main__.C'>, 42]
! [42] == [42]
 '<C object>' == '<C object>'
 OK.
--- 116,217 ----
 <type 'type'> == <type 'type'>
 <type 'function'> == <type 'function'>
+ <type 'type'> == <type 'type'>
+ <class '__main__.MC'> == <class '__main__.MC'>
+ <class '__main__.MC'> == <class '__main__.MC'>
 u'abc' == u'abc'
 u'abc' == u'abc'
 u'abc\xff' == u'abc\xff'
 u'abc\xff' == u'abc\xff'
+ unicode('abc\xff', 'ascii') raised UnicodeError
+ unicode('abc\xff', 'utf-8') raised UnicodeError
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] == [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
 [('a', 'd'), ('b', 'e'), ('c', 'f')] == [('a', 'd'), ('b', 'e'), ('c', 'f')]
 [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')] == [('a', 'd', 'g'), ('b', 'e', 'h'), ('c', 'f', 'i')]
+ None == None
+ getattr(<C object>, 'booh') raised AttributeError
+ getattr(<C object>, 'x') raised AttributeError
+ getattr(<C object>, 'xx') raised AttributeError
+ setattr(<C object>, 'xx', 42) raised AttributeError
 42 == 42
 42 == 42
 42 == 42
! delattr(<C object>, 'xx') raised AttributeError
! getattr(<C object>, 'x') raised AttributeError
! getattr(<C object>, 'xx') raised AttributeError
! None == None
! None == None
! delattr(<C object>, 'x') raised AttributeError
! ([<C object>, 42], {}) == ([<C object>, 42], {})
! ([<class '__main__.C'>, 42], {'foo': 42}) == ([<class '__main__.C'>, 42], {'foo': 42})
! ([42], {'a': 1, 'b': 2}) == ([42], {'a': 1, 'b': 2})
 '<C object>' == '<C object>'
+ 42 == 42
+たす 42 == 42
+ setattr(<C object>, 'foo', 42) raised RuntimeError
+ 'hello' == 'hello'
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
+ 42 == 42
+ 'booh' == 'booh'
+ 42 == 42
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
+ None == None
+ getattr(<C object>, 'booh') raised AttributeError
+ getattr(<C object>, 'x') raised AttributeError
+ getattr(<C object>, 'xx') raised AttributeError
+ setattr(<C object>, 'xx', 42) raised AttributeError
+ 42 == 42
+たす 42 == 42
+たす 42 == 42
+ delattr(<C object>, 'xx') raised AttributeError
+ getattr(<C object>, 'x') raised AttributeError
+ getattr(<C object>, 'xx') raised AttributeError
+ None == None
+ None == None
+ delattr(<C object>, 'x') raised AttributeError
+ ([<C object>, 42], {}) == ([<C object>, 42], {})
+ ([<class '__main__.C'>, 42], {'foo': 42}) == ([<class '__main__.C'>, 42], {'foo': 42})
+ ([42], {'a': 1, 'b': 2}) == ([42], {'a': 1, 'b': 2})
+ '<C object>' == '<C object>'
+ 42 == 42
+たす 42 == 42
+ setattr(<C object>, 'foo', 42) raised RuntimeError
+ 'hello' == 'hello'
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
+ 42 == 42
+ 'booh' == 'booh'
+ 42 == 42
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
+ None == None
+ getattr(<C object>, 'booh') raised AttributeError
+ getattr(<C object>, 'x') raised AttributeError
+ getattr(<C object>, 'xx') raised AttributeError
+ setattr(<C object>, 'xx', 42) raised AttributeError
+ 42 == 42
+たす 42 == 42
+たす 42 == 42
+ delattr(<C object>, 'xx') raised AttributeError
+ getattr(<C object>, 'x') raised AttributeError
+ getattr(<C object>, 'xx') raised AttributeError
+ None == None
+ None == None
+ delattr(<C object>, 'x') raised AttributeError
+ ([<C object>, 42], {}) == ([<C object>, 42], {})
+ ([<class '__main__.C'>, 42], {'foo': 42}) == ([<class '__main__.C'>, 42], {'foo': 42})
+ ([42], {'a': 1, 'b': 2}) == ([42], {'a': 1, 'b': 2})
+ '<C object>' == '<C object>'
+ 42 == 42
+たす 42 == 42
+ setattr(<C object>, 'foo', 42) raised RuntimeError
+ 'hello' == 'hello'
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
+ 42 == 42
+ 'booh' == 'booh'
+ 42 == 42
+ getattr(<C object>, 'spam') raised IndexError
+ 'booh' == 'booh'
 OK.


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /