Python"私人" classmethod和DRY

时间:2015-06-09 20:59:37

标签: python dry class-method

有时,某个类会有"private" @classmethod,其他方法会调用:

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

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

可以看出,重复了班级名称;不可否认,它可能不够严重,导致当前技术崩溃,然后是僵尸大灾难,但它仍然是DRY违规,有点烦人。

similar question about super的回答表明这是one of the reasons for the Py3's new super

如果没有一些魔法normal()函数(与super()相反,它返回当前类),是否有某种方法可以避免重复?

1 个答案:

答案 0 :(得分:2)

您可以使用:

self.__class__.foo()