我的程序需要做两件事.
从网页中提取内容.
做一些网页的东西.
但是,有很多网页,如Twitter和Facebook.
我应该这样做吗?
def facebookExtract(): code here def twitterExtract(): code here def myspaceExtract(): code here def facebookProcess(): code here def twitterProcess(): code here def myspaceProcess(): code here
或者,我应该上某种课吗?什么时候建议使用类,什么时候建议只使用函数?
"我的计划需要做两件事."
当你这样开始时,无法看到对象.你的观点是不对的.
改变你的想法.
"我的程序与东西一起工作"
这是OO的想法.你的程序使用什么"东西"?定义东西.那些是你的基础课程.每种东西都有一个类.
"我的程序从各种来源获取东西"
每个来源都有一个班级.
"我的程序显示的东西"
这通常是东西的访问器方法和一些"报告"类的组合,这些类收集部分内容以显示它.
当你开始定义"东西"而不是"做"时,你正在做OO编程.OO适用于所有事物,因为每个程序都涉及"做"和"东西".你可以选择"做"POV(可以是程序性的或功能性的),或者你可以选择"东西"POV(面向对象).
我最喜欢的经验法则:如果你有疑问(不言而喻的假设:"你是一个理性的人而不是狂热的人";-),那就制作并使用一些课程.我经常发现自己将最初编写为简单函数的代码重构为类 - 例如,任何时候简单函数与彼此通信的最佳方式都是全局变量,这是代码气味,强烈暗示系统的分解是不是很好 - 通常重构OOP方式是一个合理的解决方案.
Python是多范式的,但它的核心范例是OOP(很像C++).当程序或功能方法(可能通过生成器和c)对于系统的某些部分来说是最佳的时,这通常是突出的 - 例如,静态函数也是代码气味,并且如果您的类具有任何大量的那些,那么提示重构事物以避免这种要求.
因此,假设您对Python提供的所有范例有着丰富的把握 - 如果您仍然存在疑问,那么这表明您可能希望为系统的那一部分进行OOP!仅仅因为Python支持OOP甚至比它支持函数式编程等更全面.
从您的骨架代码来看,在我看来,每个提取/进程对都属于一起,可能需要通信状态,因此一小部分具有提取和处理方法的类似乎很自然.