Python“私有”类方法和 DRY

Ami*_*ory 5 python dry class-method

有时,一个类会有其他方法调用的“私有” : @classmethod

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

    def bar(self):
        ...
        FooClassThisSometimesHasALongNameEspIfAUnittestSubclasss.foo()
        ...
Run Code Online (Sandbox Code Playgroud)

可以看到,类名是重复的;诚然,这可能还没有严重到导致当前技术崩溃并引发僵尸大灾难,但它仍然是一种DRY违规,而且有点烦人。

类似问题super的答案表明这是Py3 新的原因之一super

在缺少某些神奇normal()函数(与 相反super(),返回当前类)的情况下,是否有某种方法可以避免重复?

Sim*_*ser 2

你可以使用:

self.__class__.foo()
Run Code Online (Sandbox Code Playgroud)