def test_nested(): """#328: first member in a class can't be used in operators""" from pybind11_tests.operators import NestA, NestB, NestC, get_NestA, get_NestB, get_NestC a = NestA() b = NestB() c = NestC() a += 10 assert get_NestA(a) == 13 b.a += 100 assert get_NestA(b.a) == 103 c.b.a += 1000 assert get_NestA(c.b.a) == 1003 b -= 1 assert get_NestB(b) == 3 c.b -= 3 assert get_NestB(c.b) == 1 c *= 7 assert get_NestC(c) == 35 abase = a.as_base() assert abase.value == -2 a.as_base().value += 44 assert abase.value == 42 assert c.b.a.as_base().value == -2 c.b.a.as_base().value += 44 assert c.b.a.as_base().value == 42 del c pytest.gc_collect() del a # Should't delete while abase is still alive pytest.gc_collect() assert abase.value == 42 del abase, b pytest.gc_collect()