| # 2-step function call | |
| x = [1, 2, 3] | |
| y = x.clear | |
| assert_eq(x, [1, 2, 3]) | |
| z = y() | |
| assert_eq(z, None) | |
| assert_eq(x, []) | |
| --- | |
| x = {1: 2} | |
| y = x.pop | |
| assert_eq(x, {1: 2}) | |
| z = y(1) | |
| assert_eq(z, 2) | |
| assert_eq(x, {}) | |
| --- | |
| x = "hello" | |
| y = x.upper | |
| z = y() | |
| assert_eq(z, "HELLO") | |
| assert_eq(x, "hello") | |
| --- | |
| x = "abc" | |
| y = x.index | |
| z = y("b") | |
| assert_eq(z, 1) | |
| assert_eq(x, "abc") | |
| --- | |
| y = {} | |
| assert_eq(y.clear == y.clear, False) | |
| assert_eq([].clear == [].clear, False) | |
| assert_eq(type([].clear), "function") | |
| assert_eq(str([].clear), "<built-in function clear>") | |
| --- | |
| x = {}.pop | |
| x() ### missing 1 required positional argument: key | |
| --- | |
| # getattr | |
| assert_eq(getattr("abc", "upper")(), "ABC") | |
| assert_eq(getattr({'a': True}, "pop")('a'), True) | |
| assert_eq(getattr({}, "hello", "default"), "default") | |
| y = [1, 2, 3] | |
| x = getattr(y, "clear") | |
| assert_eq(y, [1, 2, 3]) | |
| x() | |
| assert_eq(y, []) | |
| --- | |
| getattr("", "abc") ### 'string' value has no field or method 'abc' | |
| --- | |
| x = getattr("", "pop", "clear") | |
| x() ### 'string' object is not callable |