我试图为tk扩展创建一个python包装器,所以我看了Tkinter.py来学习如何做到这一点.
在查看该文件时,我发现以下模式出现了很多次:定义了一个内部方法(由方法名称中的前导"_"暗示),然后将公共方法定义为内部方法.
我想知道这样做有什么好处.
例如,在Misc类的代码中:
def _register(self, func, subst=None, needcleanup=1):
# doc string and implementations is removed since it's not relevant
register = _register
Run Code Online (Sandbox Code Playgroud)
谢谢.
有时,您可能想要更改方法的行为.例如,我可以这样做(假设在Misc类中):
def _another_register(self, func, subst=None, needcleanup=1):
...
def change_register(self):
self.register = self._another_register
def restore_register(self):
self.register = self._register
Run Code Online (Sandbox Code Playgroud)
这可以是一种非常方便的方式来改变某些代码片段的行为而无需子类化(但除了类本身之外,通常不建议这样做).