(self)
| 1445 | __slots__ = ['__dict__', 'x'] |
| 1446 | |
| 1447 | def test_slots_special2(self): |
| 1448 | # Testing __qualname__ and __classcell__ in __slots__ |
| 1449 | class Meta(type): |
| 1450 | def __new__(cls, name, bases, namespace, attr): |
| 1451 | self.assertIn(attr, namespace) |
| 1452 | return super().__new__(cls, name, bases, namespace) |
| 1453 | |
| 1454 | class C1: |
| 1455 | def __init__(self): |
| 1456 | self.b = 42 |
| 1457 | class C2(C1, metaclass=Meta, attr="__classcell__"): |
| 1458 | __slots__ = ["__classcell__"] |
| 1459 | def __init__(self): |
| 1460 | super().__init__() |
| 1461 | self.assertIsInstance(C2.__dict__["__classcell__"], |
| 1462 | types.MemberDescriptorType) |
| 1463 | c = C2() |
| 1464 | self.assertEqual(c.b, 42) |
| 1465 | self.assertNotHasAttr(c, "__classcell__") |
| 1466 | c.__classcell__ = 42 |
| 1467 | self.assertEqual(c.__classcell__, 42) |
| 1468 | with self.assertRaises(TypeError): |
| 1469 | class C3: |
| 1470 | __classcell__ = 42 |
| 1471 | __slots__ = ["__classcell__"] |
| 1472 | |
| 1473 | class Q1(metaclass=Meta, attr="__qualname__"): |
| 1474 | __slots__ = ["__qualname__"] |
| 1475 | self.assertEqual(Q1.__qualname__, C1.__qualname__[:-2] + "Q1") |
| 1476 | self.assertIsInstance(Q1.__dict__["__qualname__"], |
| 1477 | types.MemberDescriptorType) |
| 1478 | q = Q1() |
| 1479 | self.assertNotHasAttr(q, "__qualname__") |
| 1480 | q.__qualname__ = "q" |
| 1481 | self.assertEqual(q.__qualname__, "q") |
| 1482 | with self.assertRaises(TypeError): |
| 1483 | class Q2: |
| 1484 | __qualname__ = object() |
| 1485 | __slots__ = ["__qualname__"] |
| 1486 | |
| 1487 | def test_slots_descriptor(self): |
| 1488 | # Issue2115: slot descriptors did not correctly check |
nothing calls this directly
no test coverage detected