Pythonic是否尽可能使用对象?

时间:2015-05-08 14:37:59

标签: python oop

新手Python问题 - 我在Python中编写一个小实用程序,在给定2个不同文件的属性时进行磁盘空间计算。

我应该创建一个'文件'使用适合转换的方法的类,然后将每个文件创建为该类的实例?我对Python很陌生,但对Perl来说很好,我相信Perl(我可能错了,自学成才),从我看过的例子来看,大多数Perl都不是OO。

背景信息 - 这些是IBM z / OS(大型机)数据集,当给定特定磁盘类型和文件组织上的文件的分配属性(它的块大小)时,然后给出分配参数对于不同的磁盘类型和组织,空间要求可能有很大差异。

4 个答案:

答案 0 :(得分:7)

定义挑剔前言:Python中的所有东西在技术上都是一个对象,甚至是函数和数字。我会假设你的意思是你的问题中的课程与功能。

实际上我认为Python的一个优点是它不像其他语言(例如Java和C#)那样完全包含所有类。

Python中完全可以接受(并且内置模块可以做很多事情)来定义模块级函数,而不是将所有逻辑封装在对象中。

也就是说,类确实占有一席之地,例如当您对单个数据执行多个操作时,尤其是当这些操作更改数据并且您希望保持其状态封装时。

答案 1 :(得分:1)

对于你的问题和你的要求..简短的回答是“不”

答案 2 :(得分:0)

  1. 对象的使用本身不是"面向对象"。函数式编程也使用对象,但方式不同。 Python可以以非常FP的方式使用,即使Python在幕后大量使用对象。
  2. 过度使用原语可能是一个问题,但如果没有更多数据,这是否适用于您的情况是不可能的。
  3. 我认为OO是一种接口设计方法:如果您正在创建直接与可预测方法作为对象进行交互(和可替换)的工具,那么请务必创建对象。但是,如果使用模块级函数来描述交互是直截了当的,那么就不要太费力地将代码设计成类。

答案 3 :(得分:0)

首先 - Pythonic是一个需要消失的术语,最好是每个使用它的人。它并不意味着什么,并且它不能被那些不能用理性来证明任何东西的人所使用,所以他们需要一个强制性的术语来证明他们的废话。

但是,在您的软件开发中,您永远不必使用面向对象的概念,因为所有OOP都可以轻松地使用函数和实心的意大利面条。但问题是 - 在我的解决方案中使用对象是否有意义?

要了解何时以及如何使用它,您必须询问面向对象编程究竟是什么。这本书已经在非常古老,但也是免费的书中被解释得很好,这本书被称为Thinking in java,我认为这本书是用OO术语思考的101本书。我强烈建议你抓一个free copy并阅读几章的第一章。

因为如果您不了解面向对象的方法,您如何正确应用它?当你这样做 - 然后何时使用它,或者不使用它时,变得清晰,因为你可以清楚地将现实生活中的项目和交互转化为抽象对象。这是指导原则 - 当给定的动作,项目或数据向OOP模型的转换是直截了当且合乎逻辑时 - 那么你应该这样做。