Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r88493:030861c2e0a2 Date: 2016-11-20 16:48 +0100 http://bitbucket.org/pypy/pypy/changeset/030861c2e0a2/
Log: Test and fix for 'methodcaller(..., self=...)' diff --git a/pypy/module/operator/app_operator.py b/pypy/module/operator/app_operator.py --- a/pypy/module/operator/app_operator.py +++ b/pypy/module/operator/app_operator.py @@ -130,9 +130,12 @@ class methodcaller(object): - def __init__(self, method_name, *args, **kwargs): + def __init__(*args, **kwargs): + if len(args) < 2: + raise TypeError("methodcaller() called with not enough arguments") + self, method_name = args[:2] self._method_name = method_name - self._args = args + self._args = args[2:] self._kwargs = kwargs def __call__(self, obj): diff --git a/pypy/module/operator/test/test_operator.py b/pypy/module/operator/test/test_operator.py --- a/pypy/module/operator/test/test_operator.py +++ b/pypy/module/operator/test/test_operator.py @@ -244,6 +244,13 @@ assert methodcaller("method", 4, 5)(x) == (4, 5) assert methodcaller("method", 4, arg2=42)(x) == (4, 42) + def test_methodcaller_self(self): + from operator import methodcaller + class X: + def method(myself, self): + return self * 6 + assert methodcaller("method", self=7)(X()) == 42 + def test_index(self): import operator assert operator.index(42) == 42 _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit