Python "private" classmethod and DRY

1.9k views Asked by At

Occasionally, a class will have a "private" @classmethod which other methods call:

class FooClassThisSometimesHasALongNameEspIfAUnittestSubclasss(...):
    @classmethod
    def foo():
        ... 

    def bar(self):
        ...
        FooClassThisSometimesHasALongNameEspIfAUnittestSubclasss.foo()
        ...

As can be seen, the class name is repeated; it's admittedly probably not serious enough to cause a meltdown of current technology followed by a zombie apocalypse, but it's still a DRY violation, and somewhat annoying.

The answer to a similar question about super stated that this is one of the reasons for the Py3's new super.

In the absence of some magic normal() function (which, as opposed to super(), returns the current class), is there some way to avoid the repetition?

1

There are 1 answers

6
Simeon Visser On BEST ANSWER

You could use:

self.__class__.foo()