标签:
说面向对象之前,我们有必要提一下我们的老朋友函数,函数作为面向对象之前的产物,从诞生的那天注定了他的不平凡,早在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这种属性只存在一份。
Python第六天-----面向对象
标签:
原文地址:http://www.cnblogs.com/lige-python/p/5021258.html