object.py

来自「Boost provides free peer-reviewed portab」· Python 代码 · 共 175 行

PY
175
字号
# Copyright David Abrahams 2004. Distributed under the Boost# Software License, Version 1.0. (See accompanying# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)'''>>> from object_ext import *>>> type(ref_to_noncopyable())<class 'object_ext.NotCopyable'>>>> def print1(x):...     print x>>> call_object_3(print1)3>>> message()'hello, world!'>>> number()42>>> test('hi')1>>> test(None)0>>> test_not('hi')0>>> test_not(0)1        Attributes>>> class X: pass...>>> x = X()>>> try: obj_getattr(x, 'foo')... except AttributeError: pass... else: print 'expected an exception'>>> try: obj_objgetattr(x, 'objfoo')... except AttributeError: pass... else: print 'expected an exception'>>> obj_setattr(x, 'foo', 1)>>> x.foo1>>> obj_objsetattr(x, 'objfoo', 1)>>> try:obj_objsetattr(x, 1)... except TypeError: pass... else: print 'expected an exception'>>> x.objfoo1>>> obj_getattr(x, 'foo')1>>> obj_objgetattr(x, 'objfoo')1>>> try:obj_objgetattr(x, 1)... except TypeError: pass... else: print 'expected an exception'>>> obj_const_getattr(x, 'foo')1>>> obj_const_objgetattr(x, 'objfoo')1>>> obj_setattr42(x, 'foo')>>> x.foo42>>> obj_objsetattr42(x, 'objfoo')>>> x.objfoo42>>> obj_moveattr(x, 'foo', 'bar')>>> x.bar42>>> obj_objmoveattr(x, 'objfoo', 'objbar')>>> x.objbar42>>> test_attr(x, 'foo')1>>> test_objattr(x, 'objfoo')1>>> test_not_attr(x, 'foo')0>>> test_not_objattr(x, 'objfoo')0>>> x.foo = None>>> test_attr(x, 'foo')0>>> x.objfoo = None>>> test_objattr(x, 'objfoo')0>>> test_not_attr(x, 'foo')1>>> test_not_objattr(x, 'objfoo')1>>> obj_delattr(x, 'foo')>>> obj_objdelattr(x, 'objfoo')>>> try:obj_delattr(x, 'foo')... except AttributeError: pass... else: print 'expected an exception'>>> try:obj_objdelattr(x, 'objfoo')... except AttributeError: pass... else: print 'expected an exception'        Items>>> d = {}>>> obj_setitem(d, 'foo', 1)>>> d['foo']1>>> obj_getitem(d, 'foo')1>>> obj_const_getitem(d, 'foo')1>>> obj_setitem42(d, 'foo')>>> obj_getitem(d, 'foo')42>>> d['foo']42>>> obj_moveitem(d, 'foo', 'bar')>>> d['bar']42>>> obj_moveitem2(d, 'bar', d, 'baz')>>> d['baz']42>>> test_item(d, 'foo')1>>> test_not_item(d, 'foo')0>>> d['foo'] = None>>> test_item(d, 'foo')0>>> test_not_item(d, 'foo')1        Slices        >>> assert check_string_slice()        Operators        >>> assert check_binary_operators()>>> class X: pass...>>> assert check_inplace(range(3), X())       Now make sure that object is actually managing reference counts       >>> import weakref>>> class Z: pass...>>> z = Z()>>> def death(r): print 'death'...>>> r = weakref.ref(z, death)>>> z.foo = 1>>> obj_getattr(z, 'foo')1>>> del zdeath'''def run(args = None):    import sys    import doctest    if args is not None:        sys.argv = args    return doctest.testmod(sys.modules.get(__name__))    if __name__ == '__main__':    print "running..."    import sys    status = run()[0]    if (status == 0): print "Done."    sys.exit(status)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?