有时,某个类会有"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()
相反,它返回当前类),是否有某种方法可以避免重复?
答案 0 :(得分:2)
您可以使用:
self.__class__.foo()