(self)
| 4154 | int().__rpow__, 1, 2, 3) |
| 4155 | |
| 4156 | def test_mutable_bases(self): |
| 4157 | # Testing mutable bases... |
| 4158 | |
| 4159 | # stuff that should work: |
| 4160 | class C(object): |
| 4161 | pass |
| 4162 | class C2(object): |
| 4163 | def __getattribute__(self, attr): |
| 4164 | if attr == 'a': |
| 4165 | return 2 |
| 4166 | else: |
| 4167 | return super(C2, self).__getattribute__(attr) |
| 4168 | def meth(self): |
| 4169 | return 1 |
| 4170 | class D(C): |
| 4171 | pass |
| 4172 | class E(D): |
| 4173 | pass |
| 4174 | d = D() |
| 4175 | e = E() |
| 4176 | D.__bases__ = (C,) |
| 4177 | D.__bases__ = (C2,) |
| 4178 | self.assertEqual(d.meth(), 1) |
| 4179 | self.assertEqual(e.meth(), 1) |
| 4180 | self.assertEqual(d.a, 2) |
| 4181 | self.assertEqual(e.a, 2) |
| 4182 | self.assertEqual(C2.__subclasses__(), [D]) |
| 4183 | |
| 4184 | with self.assertRaisesRegex(TypeError, |
| 4185 | "cannot delete '__bases__' attribute of type 'D'"): |
| 4186 | del D.__bases__ |
| 4187 | with self.assertRaisesRegex(TypeError, 'can only assign non-empty tuple'): |
| 4188 | D.__bases__ = () |
| 4189 | with self.assertRaisesRegex(TypeError, 'can only assign tuple'): |
| 4190 | D.__bases__ = [C] |
| 4191 | with self.assertRaisesRegex(TypeError, 'duplicate base class'): |
| 4192 | D.__bases__ = (C, C) |
| 4193 | with self.assertRaisesRegex(TypeError, 'inheritance cycle'): |
| 4194 | D.__bases__ = (D,) |
| 4195 | with self.assertRaisesRegex(TypeError, 'inheritance cycle'): |
| 4196 | D.__bases__ = (E,) |
| 4197 | |
| 4198 | class A: |
| 4199 | __slots__ = () |
| 4200 | def __repr__(self): |
| 4201 | return '<A>' |
| 4202 | class A_with_dict: |
| 4203 | __slots__ = ('__dict__',) |
| 4204 | def __repr__(self): |
| 4205 | return '<A_with_dict>' |
| 4206 | class A_with_dict_weakref: |
| 4207 | def __repr__(self): |
| 4208 | return '<A_with_dict_weakref>' |
| 4209 | class A_with_slots: |
| 4210 | __slots__ = ('x',) |
| 4211 | def __repr__(self): |
| 4212 | return '<A_with_slots>' |
| 4213 | class A_with_slots_dict: |
nothing calls this directly
no test coverage detected