简单函数中方法与函数的区别

1 投票
3 回答
596 浏览
提问于 2025-04-16 03:58

我有一个原始的类(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 以外的其他东西上使用。目前,我会选择使用自由函数,但当需求明确后,转换你的解决方案应该会很简单。

(我更喜欢自由函数,因为它不限制可以传递给它的内容,而且任何只依赖于其他对象公共接口的功能都应该是一个函数,这样可以减少耦合。)

撰写回答