mirror of
https://github.com/python/cpython.git
synced 2026-01-27 01:32:20 +00:00
Actually execute the tests for the getter/setter/deleter tests on properties.
Also fix the test by having the test classes inherit from object. Are the getter/setter/deleter attributes supposed to be able to chain? As of right now they can't as the property tries to call what the property returns, which is another property when they are chained.
This commit is contained in:
parent
a6ae8974c1
commit
4e438bcc56
1 changed files with 12 additions and 7 deletions
|
|
@ -2131,7 +2131,7 @@ class X(object):
|
|||
|
||||
|
||||
def properties_plus():
|
||||
class C:
|
||||
class C(object):
|
||||
foo = property(doc="hello")
|
||||
@foo.getter
|
||||
def foo(self):
|
||||
|
|
@ -2146,8 +2146,11 @@ def foo(self):
|
|||
assert C.foo.__doc__ == "hello"
|
||||
assert not hasattr(c, "foo")
|
||||
c.foo = -42
|
||||
assert hasattr(c, '_foo')
|
||||
assert c._foo == 42
|
||||
assert c.foo == 42
|
||||
del c.foo
|
||||
assert not hasattr(c, '_foo')
|
||||
assert not hasattr(c, "foo")
|
||||
|
||||
class D(C):
|
||||
|
|
@ -2163,20 +2166,20 @@ def foo(self):
|
|||
del d.foo
|
||||
del d.foo
|
||||
|
||||
class E:
|
||||
class E(object):
|
||||
@property
|
||||
def foo(self):
|
||||
return self._foo
|
||||
@foo.setter
|
||||
def foo (self, value):
|
||||
def foo(self, value):
|
||||
raise RuntimeError
|
||||
@foo.setter
|
||||
def foo(self, value):
|
||||
self._foo = abs(value)
|
||||
@foo.deleter
|
||||
def foo(self, value=None):
|
||||
if value is None:
|
||||
del self._foo
|
||||
else:
|
||||
self._foo = abs(value)
|
||||
del self._foo
|
||||
|
||||
e = E()
|
||||
e.foo = -42
|
||||
assert e.foo == 42
|
||||
|
|
@ -2193,6 +2196,7 @@ def foo(self, value):
|
|||
f.foo = -10
|
||||
assert f.foo == 0
|
||||
del f.foo
|
||||
print "*** HIT"
|
||||
|
||||
|
||||
def supers():
|
||||
|
|
@ -4477,6 +4481,7 @@ def test_main():
|
|||
recursions()
|
||||
weakrefs()
|
||||
properties()
|
||||
properties_plus()
|
||||
supers()
|
||||
inherits()
|
||||
keywords()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue