我是编程新手.我最近读过:
您的程序应该具有封装在函数或类方法中的几乎所有功能
这使得我似乎不应该同时拥有这两个函数和方法.我还读到方法应该简短.
好吧,我最近制作了一个从博客下载图像的小程序.我使用了类和OOP方法,因为我需要继承某些东西.
但是,因为方法应该简短并做一件事,我的程序不能做太多.我的问题是,如果我试图使用纯OOP方法,怎么可能避免编写函数?
我的脚本基本遵循以下模式:
class Tumblr(object): def __init__(self, user): self.user = user def get_posts(self): """Use tumblr api to return a user's posts.""" return client['blog']['posts'] def parse_images(self): """Returns images.""" images = [] for post in posts: if 'image' in post: images.append(post['image']) return images def parse_videos(self): """Returns videos.""" def main(): # this is a function, and thus not OOP?
我还有其他类用于不同的网站API,还有一个Downloader类,它实际上将文件下载到磁盘和正确的目录.问题是,现在我所有的都是这些孤立的类和方法.
我想创建一个main
也可以使用其他功能的函数,但是我再次认为这不是正确的OOP.
如何在不编写函数的情况下实际完成工作?(我读过的教科书说,如果我使用方法,不应该在纯OOP中使用函数.)
当函数满足时,不要去写类.从禅宗的Python中解释 ;
简单比复杂更好.
实用性胜过纯洁.
在Python中,您可以使用许多编程方法; 程序性,面向对象,功能性.都有自己的优点和缺点.但都有它们的用途.
如果您正在努力为问题构建纯粹的面向对象的解决方案,那么这可能表明您正在做错,并且对象不是解决该特定问题的最佳解决方案.
您应该采用最适合问题的方法.
Jack Diederich的PyCon演讲"停止写作课程"包含一些很好的例子.一个有说服力的事后明显的教训是,如果你的对象有两种方法,其中一种是__init__
伪装,它实际上是一种伪装的功能.