[Python-ideas] PEP proposal: unifying function/method classes

Antoine Pitrou solipsis at pitrou.net
Wed Mar 28 13:28:03 EDT 2018


On Wed, 28 Mar 2018 19:22:50 +0200
Erik Bray <erik.m.bray at gmail.com> wrote:
> 
> I don't really see your point in this example.  For one: why would
> anyone do this?  Is this based on a real example?

Yes, I remember doing that when writing unit tests for open() and
open()-like functions.

You would write a base test case:

class TestBase:
    open_func = None

    def test_something(self):
        self.open_func(...)  # etc.

and then instantiate concrete subclasses:

class BuiltinOpenTest(TestBase, unittest.TestCase):
    open_func = open

class PyOpenTest(TestBase, unittest.TestCase):
    open_func = staticmethod(_pyio.open)

>  2) That's how any
> function works.  If you put some arbitrary function in a class body,
> and it's not able to accept an instance of that class as its first
> argument, then it will always be broken unless you make it a
> staticmethod.  I don't see how there should be any difference there if
> the function were implemented in Python or in C.

I agree that there *should* be no difference.  The point is, there is
currently a difference and suppressing it may break compatibility.

I don't think the breakage is important enough to stop us from
streamlining things here.  Just pointing out the risk exists.

Regards

Antoine.




More information about the Python-ideas mailing list