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()
偶尔,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()