python学习笔记面向对象基本概念
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记面向对象基本概念相关的知识,希望对你有一定的参考价值。
照例上原链http://www.cnblogs.com/vamei/archive/2012/06/02/2531515.html
#第一次接触面向对象,而且是没有C的基础 #话说很久没有去看C的教程了 #记得C的老师说,面向对象,面向过程,不是很容易明白,明白面向过程,自然明白面向对象是什么(这里有转述,对不对不深究) #这里接触到了attribute ,之前 遇到的error 都是以跳过为解决办法,后面再说 #作者在这里定义了鸟的类,和属性 #类class:属性相近的东西;鸟 #属性attribute:所具有的特征;鸟的属性,有羽毛,卵生进行繁衍 #新的类,哺乳动物,用肺呼吸,胎生 class bird(object): have_feather = True#有羽毛是真 way_of_reproduction = ‘egg‘#繁衍方式蛋 summer = bird() print (‘summer.way_of_reproduction is‘,summer.way_of_reproduction) #输出结果:summer.way_of_reproduction is egg #增加了动作,用来区分动态和静态物品 class bird(object):#()为object,说明这个类没有父类,到头了 have_feather = True way_of_reproduction = ‘egg‘ def move(self, dx, dy):#这里定义,self的问题,作者并没有解释,dx dy应该可以直接使用x y来代替,d的前缀也不知道作者是想表达什么 position = [0, 0]#位置的坐标,通过list实现的,为什么通过list实现? position[0] = position[0] + dx#通过索引,更新list position[1] = position[1] + dy#同上 return position#返回更新过后的list summer = bird() print (‘after move:‘, summer.move(5, 8)) #summer移动后的位置 #输出结果:after move: [5, 8] #self 的问题作者是这么说的,为了方便引用对象自身,这句话也是不懂 #然后延伸出子类 #子类是从父类那里继承的 class chicken(bird):#定义bird ()里面是object,现在()里面是bird,说明chicken是bird的子类,chicken是继承bird的属性的 way_of_move = ‘walk‘#移动方式是走 possible_in_KFC = True#可能在KFC看到 class oriole(bird):#同上 way_of_move = ‘fly‘#移动方式是飞行 possible_in_KFC = False#在KFC看不到 summer = chicken() print (summer.have_feather) print (summer.move(5, 8)) print (summer.way_of_reproduction) print (summer.way_of_move) #chicken oriole 是新的两个类,都是从bird里面继承过来的 #bird 是父类 #chicken oriole 是子类 #chicken oriole 继承bird的所有属性,可以看have feather 和way of reproduction的打印 #我们定义summer 是chicken,通过继承拥有了bird 的属性 #执行,看一下 ‘‘‘ 输出结果: True [5, 8] egg walk ‘‘‘ #修改一下,方便后期查看 summer = chicken() print (‘summer.have_feather:‘,summer.have_feather) print (‘after move:‘, summer.move(5, 8)) print (‘summer.way_of_reproduction is‘, summer.way_of_reproduction) print (‘summer.way_of_move is‘, summer.way_of_move) ‘‘‘ 输出结果: summer.have_feather: True after move: [5, 8] summer.way_of_reproduction is egg summer.way_of_move is walk ‘‘‘ #这里作者讲述了一些关于面向对象和面向过程的说法 #面向对象是符合人类思维的,按照类这种思维方式,是人类的 #面向过程,是执行完程序的一句然后进行下一句,更多是机器思维 #这里的面向对象和面向过程,应该是每一个程序员都有自己的思维,就像同一个功能每一个程序员写出来的代码都不一样 #至于C的老师说的面向对象 面向过程 的说法,已经完全不记得了 ‘‘‘ 将东西按照属性归类,将object(物)归为class(类),就有了class class里面有属性,就是attribute 建立对象 对象 = 类() summer = chicken() summer.move 引用chicken的属性 move object.attribute 引用对象的属性 父类-子类 子类继承父类的所有属性 “通过继承制度,我们可以减少程序中的重复信息和重复语句 “如果我们分别定义两个类,而不继承自鸟类,就必须把鸟类的属性分别输入到鸡类和黄鹂类的定义中 “整个过程会变得繁琐,因此,面向对象提高了程序的可重复使用性 我倒觉得不繁琐,会多输入很多内容,python毕竟越明了简单越易读 self不懂 代表了根据类定义而创建的对象,以后深入 ‘‘‘
以上是关于python学习笔记面向对象基本概念的主要内容,如果未能解决你的问题,请参考以下文章