| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- # test builtin property
- try:
- property
- except:
- print("SKIP")
- raise SystemExit
- # create a property object explicitly
- property()
- property(1, 2, 3)
- # use its accessor methods
- p = property()
- p.getter(1)
- p.setter(2)
- p.deleter(3)
- # basic use as a decorator
- class A:
- def __init__(self, x):
- self._x = x
- @property
- def x(self):
- print("x get")
- return self._x
- a = A(1)
- print(a.x)
- try:
- a.x = 2
- except AttributeError:
- print("AttributeError")
- # explicit use within a class
- class B:
- def __init__(self, x):
- self._x = x
- def xget(self):
- print("x get")
- return self._x
- def xset(self, value):
- print("x set")
- self._x = value
- def xdel(self):
- print("x del")
- x = property(xget, xset, xdel)
- b = B(3)
- print(b.x)
- b.x = 4
- print(b.x)
- del b.x
- # full use as a decorator
- class C:
- def __init__(self, x):
- self._x = x
- @property
- def x(self):
- print("x get")
- return self._x
- @x.setter
- def x(self, value):
- print("x set")
- self._x = value
- @x.deleter
- def x(self):
- print("x del")
- c = C(5)
- print(c.x)
- c.x = 6
- print(c.x)
- del c.x
- # a property that has no get, set or del
- class D:
- prop = property()
- d = D()
- try:
- d.prop
- except AttributeError:
- print('AttributeError')
- try:
- d.prop = 1
- except AttributeError:
- print('AttributeError')
- try:
- del d.prop
- except AttributeError:
- print('AttributeError')
- # properties take keyword arguments
- class E:
- p = property(lambda self: 42, doc="This is truth.")
- # not tested for because the other keyword arguments are not accepted
- # q = property(fget=lambda self: 21, doc="Half the truth.")
- print(E().p)
- # a property as an instance member should not be delegated to
- class F:
- def __init__(self):
- self.prop_member = property()
- print(type(F().prop_member))
|