MCPcopy Index your code
hub / github.com/python/cpython / test_slots

Method test_slots

Lib/test/test_descr.py:1107–1321  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1105
1106 @support.thread_unsafe
1107 def test_slots(self):
1108 # Testing __slots__...
1109 class C0(object):
1110 __slots__ = []
1111 x = C0()
1112 self.assertNotHasAttr(x, "__dict__")
1113 self.assertNotHasAttr(x, "foo")
1114
1115 class C1(object):
1116 __slots__ = ['a']
1117 x = C1()
1118 self.assertNotHasAttr(x, "__dict__")
1119 self.assertNotHasAttr(x, "a")
1120 x.a = 1
1121 self.assertEqual(x.a, 1)
1122 x.a = None
1123 self.assertEqual(x.a, None)
1124 del x.a
1125 self.assertNotHasAttr(x, "a")
1126
1127 class C3(object):
1128 __slots__ = ['a', 'b', 'c']
1129 x = C3()
1130 self.assertNotHasAttr(x, "__dict__")
1131 self.assertNotHasAttr(x, 'a')
1132 self.assertNotHasAttr(x, 'b')
1133 self.assertNotHasAttr(x, 'c')
1134 x.a = 1
1135 x.b = 2
1136 x.c = 3
1137 self.assertEqual(x.a, 1)
1138 self.assertEqual(x.b, 2)
1139 self.assertEqual(x.c, 3)
1140
1141 class C4(object):
1142 """Validate name mangling"""
1143 __slots__ = ['__a']
1144 def __init__(self, value):
1145 self.__a = value
1146 def get(self):
1147 return self.__a
1148 x = C4(5)
1149 self.assertNotHasAttr(x, '__dict__')
1150 self.assertNotHasAttr(x, '__a')
1151 self.assertEqual(x.get(), 5)
1152 try:
1153 x.__a = 6
1154 except AttributeError:
1155 pass
1156 else:
1157 self.fail("Double underscored names not mangled")
1158
1159 # Make sure slot names are proper identifiers
1160 try:
1161 class C(object):
1162 __slots__ = [None]
1163 except TypeError:
1164 pass

Callers

nothing calls this directly

Calls 15

CountedClass · 0.85
assertNotHasAttrMethod · 0.80
assertRaisesRegexMethod · 0.80
C0Class · 0.70
C1Class · 0.70
C3Class · 0.70
C4Class · 0.70
CClass · 0.70
DClass · 0.70
EClass · 0.70
FClass · 0.70
GClass · 0.70

Tested by

no test coverage detected