Python第六天-----面向对象

    说面向对象之前,我们有必要提一下我们的老朋友函数,函数作为面向对象之前的产物,从诞生的那天注定了他的不平凡,早在C语言中根本没有面向对象这种概念,但是依旧C语言活的好好的。所以面向对象并不是必须的,面向对象的存在只是为了简化过程。

    我们不妨考虑一下,假设我们不知道面向对象,而此时我们需要写人,此时采用传统函数式编程,我们需要考虑人有多少属性,例如:人有头、胳膊腿等等等等、按照传统函数式的方法我们只能定义字典来去实现
 
people1 = {
"head":1,
"eyes":2
.........
}
 
    此时我们当需要在写一个人的时候,只能通过复制来进行实现,并且扩展成本高,假设我们需要些1W个人,我们就需要copy 1W次(我靠想想都觉得恐怖,或许无聊的石鹏会这么干。。。。。)这不是重点,重点是当需要新增属性时,你就需要修改1W次。。。。。好吧疯了。。。。。此外当有人调用时你还不知道是谁在调用,无法进行监测,此外这是字典啊字典。。这就意味着任何人都可以修改,没错任何人,并且你还不知道是谁修改了,是不是和可怕。
    为了解决这个可怕的问题,面向对象就来了(在这里膜拜下写C的毕竟C可没有面向对象),用面向对象的方法解决刚才的问题,一切就变得简单,首先我们可以定义人这个类,然后在这个类中我们可以定义许多参数例如:头、眼睛、胳膊腿等等等等。来我们先举个栗子
    
class people(object):
    def _init_ (self,name)
        self.name = name
    def eye(self)
        print "%s have two eyes" %(self.name)
 
 
 
p1 = people("Jack")
p1.eye()
大家猜一下返回值会是什么,没错小明说的对,就是Jack have two eyes
首先我们定义了p1 = people("Jack")(其实这就是对象的实例化),所以此时P1=people
而_init_就是对象的初始化,所以此时people的name就是p1的那么self。name就是Jack所以此时才会返回刚才的结果,好啦我们的头就开到这,其实面向对象的功能还有很多,比如继承、获取调用者(例如刚才的例子我们就知道Jack在调用),此外还可以进行限制用户的修改。在这里有必要说一句,为了节约内存空间、eye这种属性只存在一份。

 

posted @ 2015-12-05 11:30  跟力哥学python  阅读(154)  评论(0编辑  收藏  举报