如果程序中只有一个类,是否有任何理由在Python中使用类?

The*_*hea 8 python oop class

我见过一些人通过创建一个类然后调用所有方法的对象来编写Python代码.如果我们不使用继承,封装等,是否有使用类的优势?这些代码在我看来不那么干净,所有这些"自我"论证,我们可以避免.这种做法是否受到其他编程语言(如Java)的影响,或者有什么理由说明为什么Python程序应该像这样构建?

示例代码:

class App:

# all the methods go here

a = App()    
Run Code Online (Sandbox Code Playgroud)

aar*_*ing 7

虽然并不总是适用,但一个优点是它可以通过继承一个类来轻松扩展程序.例如,我可以对它进行子类化并覆盖从csv文件读取读取xml文件然后根据运行时信息实例化子类或原始类的方法.从那里,程序的逻辑可以正常进行.

这当然引发了一个问题,即读取文件是否真的是类的责任,或者更恰当地属于具有用于读取不同类型数据的子类的类,并且提供了对该数据的统一接口,但当然,另一个题.

就个人而言,我发现最简洁的方法是将对其参数做出强有力假设的函数作为方法放在适当的类上,并将函数作为函数放在模块中作出非常弱的假设.

  • +1.我喜欢将我的应用程序打包为可子类化的应用程序对象,因此可以通过子类自定义它们,并且可以并行运行不同的自定义版本(使用猴子修补程序无法实现).对于更复杂的应用程序,这往往涉及许多内部类,也可以是子类. (2认同)

小智 6

我自己经常对应用程序的管理部分做同样的事情,理论上,可以简化为简单的、非常顺序的函数式编程。

它的主要优点(对我来说)是它很好地封装了您的主循环或一次运行执行,并且它允许跨块高效、干净地配置运行和持久数据,从根本上根据需要重新配置它,而无需更改代码本身。更不用说将执行子类化为不同的扩展执行的能力。

以这种方式扩展 main 往往会容易得多,然后当你有一个由 200 行组成的坚实块,周围散布着一些相当神秘的范围的东西时。

在你写了足够多的Python之后,自我就会作为一种障碍消失,就我个人而言,我喜欢它如何立即在视觉上区分我显然想要跨范围保留的内容和我确实想要运行的一次性元素超出范围并在完成特定步骤后立即收集。

最后但并非最不重要的一点是,有些人会对他们拿到的任何东西持反对态度,或者无法阅读它。我是其中之一:)