简单函数中方法与函数的区别
我有一个原始的类(DownloadPage),我需要添加一个简单的功能(get_info)。在面向对象编程中,哪种方法更好呢?
def get_info(page): # make simple function
...
result = get_info(DownloadPage())
或者
class MyDownloadPage(DownloadPage): # make new class with inheritance
def get_info(self): # with one method
...
result = MyDownloadPage().get_info()
谢谢
3 个回答
1
这可能有点不合常规,但为什么不直接把它作为一个方法加到现有的类里呢?
def get_info(self):
...
DownloadPage.get_info = get_info
我知道这样做并不是标准做法,但我很想听听Python专家们为什么不这样做的解释。
2
因为一个解决方案和另一个解决方案之间的距离很小,所以用一个函数几乎没有什么区别。
一旦你有了两个函数,我觉得派生类(子类)会更容易维护。
当这两个函数想要共享一个共同的值,比如一个日志记录器或者配置变量时,你会发现这样做更有好处。
3
这个答案其实取决于你是否希望这个 get_info
函数可以在除了 MyDownloadPage
以外的其他东西上使用。目前,我会选择使用自由函数,但当需求明确后,转换你的解决方案应该会很简单。
(我更喜欢自由函数,因为它不限制可以传递给它的内容,而且任何只依赖于其他对象公共接口的功能都应该是一个函数,这样可以减少耦合。)