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学习笔记面向对象基本概念的主要内容,如果未能解决你的问题,请参考以下文章

(Object-C)学习笔记 --OC语言面向对象和基本概念

学习廖雪峰Python3教程之面向对象小笔记

python学习7_1面向对象基本概念和用法

Python学习笔记——类

python-学习笔记1-面向对象编程

Python学习笔记第六周