以前本科和研究生都是数学系,从来没接触过编程,更别提面向对象的编程了。以前看书,总是看不懂弄一个类要做什么,这次实习,有许许多多用这些的时候,才体会到面向对象的理论。写点东西,省得忘了。当然知识的更新是长久的,我也希望未来某一天我回看自己这个东西的时候,我会觉得自己的理解还很肤浅。呵呵当年的自己too simple。这代表我技术成长了
面相对象的思想: 我定义一个类,这个类里面,有属性,也有方法,可以实现某种,这样那样的目的。类里有属性,类里有方法,你写好了之后,创建一个对象,这个对象带着自己特异的值。因为每个对象都是不同的,这个对象带着他自己特异的值,也就是初值,进入到这个类中。
实际上,带着初值的这个对象,是走了一个它的初始化的方法__init__(self,XXX),继而把自己的初值,赋给了self,继而类里的函数都可以用你这个对象带的值了。
举个例子
i=evaluateClassificationIndex([1,1,1,0,1,0,1],[1,1,0,0,1,0,0]) 这样,我就创建了一个evaluateClassificationIndex的类里的一个对象i,况且,它带着自己的初值,为以后的方法计算提供了帮助。
这个类里的方法,是一定一定能够用得到你这个对象带的数值的。不然,你想,我创建对象的目的,就是调用这个类里的方法,那么说明,这个方法的计算结果,一定依赖我这个对象给出的值。
话说回来了。我写好了类,那就是谁都可以调用的,只要有我的包,import我的类,那么就一定可以用我类里的方法。
那么问题来了,给你用可以,你建立个我这个类的对象,然后用我类里的方法做事情,无可厚非。但是当你创建了我这个类的对象时,其实我是给你了一把掌握生杀大权的钥匙。你这个对象,可以调用我的类,也可以查看我的属性,你可以为所欲为胡作非为,那么,要是你一个高兴,把我类里面的数据给改了怎么办??别人下次还用不用了??
所以,作为写类的人,也就是我,在给你生杀大权令旗的时候,要提前把几个关键的东西锁上。给你这把令旗,你可以调兵遣将,用我里面的方法,但是,有些我不想让你看到的,或者说我不想让你改的。我就把它封装起来。你要想看?你跟我说,我给你写个函数,能看到这个值【当然也看我心情,我不想给你看的话,我就不给你写这个函数,你就调用不了函数,看不到】封装起来,就是怕你随便改数字。
总之,你该干干你的事儿 拿好我的函数赶快做你自己的事儿去 别老惦记着改我类里的值。所以,为了防止这种不法分子出现,我需要把一部分东西,封装起来。
这便是封装的意义。