mirror of
https://github.com/RustPython/RustPython.git
synced 2026-06-17 01:51:39 +09:00
48 lines
875 B
Python
48 lines
875 B
Python
from testutils import assertRaises
|
|
|
|
|
|
class Fubar:
|
|
def __init__(self):
|
|
self.x = 100
|
|
|
|
@property
|
|
def foo(self):
|
|
value = self.x
|
|
self.x += 1
|
|
return value
|
|
|
|
|
|
f = Fubar()
|
|
assert f.foo == 100
|
|
assert f.foo == 101
|
|
|
|
|
|
null_property = property()
|
|
assert type(null_property) is property
|
|
|
|
p = property(lambda x: x[0])
|
|
assert p.__get__((2,), tuple) == 2
|
|
# TODO owner parameter is optional
|
|
# assert p.__get__((2,)) == 2
|
|
|
|
with assertRaises(AttributeError):
|
|
null_property.__get__((), tuple)
|
|
|
|
with assertRaises(TypeError):
|
|
property.__new__(object)
|
|
|
|
|
|
p1 = property("a", "b", "c")
|
|
|
|
assert p1.fget == "a"
|
|
assert p1.fset == "b"
|
|
assert p1.fdel == "c"
|
|
|
|
assert p1.getter(1).fget == 1
|
|
assert p1.setter(2).fset == 2
|
|
assert p1.deleter(3).fdel == 3
|
|
|
|
assert p1.getter(None).fget == "a"
|
|
assert p1.setter(None).fset == "b"
|
|
assert p1.deleter(None).fdel == "c"
|