Python中的类使用

Nop*_*ope 7 python oop procedural-programming class-design

我写了很多在Python脚本来分析和情节的实验数据,以及编写简单的模拟来检验理论如何适应数据.脚本往往非常程序化; 计算一些属性,计算一些其他属性,绘制属性,分析图...

而不仅仅是编写程序,使用类会有好处吗?我可以将实际分析隐藏到函数中,这样我就可以将数据传递给函数并让它做它的事情,但函数不包含在类中.

如果可以通过程序编写,那么Class会有什么样的缺点以及使用Class的目的是什么?

如果这是在我道歉之前发布的,请指出我的方向.

Est*_*ber 15

通过使用面向对象编程,您将拥有具有相关功能的对象,这些对象(应该)是修改其属性(内部变量)的唯一方法.

通常会调用函数trim_string(string),而使用string类可以执行string.trim().差异显而易见,主要是在进行大型复杂模块时,您需要尽一切努力缩小各个组件之间的耦合.

有迹象表明,包括OOP,如继承等概念,但要知道真正重要的事情,是OOP的目的是使你想想对象具有操作和消息传递(方法/动词),而不是在经营期限思(功能/动词)和基本元素(变量)

面向对象范式的重要性在语言机制中并不像在思考和设计过程中那么重要.

另外看看这个问题.

结构化编程没有任何内在错误,只是有些问题更好地映射到面向对象的设计.

例如,您可以使用SP语言:

#Pseudocode!!!

function talk(dog):
    if dog is aDog:
        print "bark!"
    raise "IS NOT A SUPPORTED ANIMAL!!!"

>>var dog as aDog
>>talk(dog)
"bark!"
>>var cat as aCat
>>talk(cat)
EXCEPTION: IS NOT A SUPPORTED ANIMAL!!!

# Lets add the cat
function talk(animal):
    if animal is aDog:
        print "bark!"
    if animal is aCat:
        print "miau!"
    raise "IS NOT A SUPPORTED ANIMAL!!!"
Run Code Online (Sandbox Code Playgroud)

在OOP上你有:

class Animal:
     def __init__(self, name="skippy"):
         self.name = name
     def talk(self):
         raise "MUTE ANIMAL"

class Dog(Animal):
     def talk(self):
         print "bark!"

class Cat(Animal):
     def talk(self):
         print "miau!"

>>dog = new Dog()
>>dog.talk()
"bark!"
>>cat = new Cat()
>>cat.talk()
"miau!"
Run Code Online (Sandbox Code Playgroud)

你可以看到,与SP,每次添加的动物,你不得不另加iftalk,再添变数存储动物的名字,触摸每一个潜在的功能模块中,而在OOP,你可以考虑你的类与其他人一样独立.当存在全局变化时,您将更改Animal,当它是一个狭窄的变化时,您只需要查看类定义.

对于简单,顺序和可能一次性的代码,可以使用结构化编程.

  • 那些是非常愤怒的例外 (7认同)