Python "private" 类方法和 DRY

Python "private" classmethod and DRY

偶尔,class 会有一个 "private" @classmethod,其他方法调用:

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

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

可以看出,class名字重复了;诚然,它可能还没有严重到导致当前技术崩溃并随后出现僵尸末日的程度,但它仍然是 DRY 违规行为,而且有点烦人。

similar question about super stated that this is one of the reasons for the Py3's new super的答案。

在没有一些神奇的 normal() 函数(与 super()、returns 当前的 class 相对)的情况下,是否有一些方法可以避免重复?

您可以使用:

self.__class__.foo()