You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
1.0 KiB
53 lines
1.0 KiB
# test builtin property combined with inheritance
|
|
try:
|
|
property
|
|
except:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
# test property in a base class works for derived classes
|
|
class A:
|
|
@property
|
|
def x(self):
|
|
print('A x')
|
|
return 123
|
|
class B(A):
|
|
pass
|
|
class C(B):
|
|
pass
|
|
class D:
|
|
pass
|
|
class E(C, D):
|
|
pass
|
|
print(A().x)
|
|
print(B().x)
|
|
print(C().x)
|
|
print(E().x)
|
|
|
|
# test that we can add a property to base class after creation
|
|
class F:
|
|
pass
|
|
F.foo = property(lambda self: print('foo get'))
|
|
class G(F):
|
|
pass
|
|
F().foo
|
|
G().foo
|
|
|
|
# should be able to add a property to already-subclassed class because it already has one
|
|
F.bar = property(lambda self: print('bar get'))
|
|
F().bar
|
|
G().bar
|
|
|
|
# test case where class (H here) is already subclassed before adding attributes
|
|
class H:
|
|
pass
|
|
class I(H):
|
|
pass
|
|
|
|
# should be able to add a normal member to already-subclassed class
|
|
H.val = 2
|
|
print(I().val)
|
|
|
|
# should be able to add a property to the derived class
|
|
I.baz = property(lambda self: print('baz get'))
|
|
I().baz
|
|
|