一、面向对象:

class(类):一类拥有共同属性对象的抽象;定义了这些对象的属性和方法
object(对象):是一个类实例化后的实例,类必须经过实例化才可以在程序中调用;

由于之前学习过java,对类和对象已经有了一定的了解了,就不再详细介绍。

二、特性

encapsulation(封装):将内部的内容封装起来了。例如数据的设置、访问和处理结果我们都可以通过调用实例的方法直接获取,而不需要知道内部的处理逻辑。
inheritance(继承):一个类可以派生出子类,父类中定义的属性和方法被子类自动继承
polymorphism(多态):一个基类派生出了不同的子类,且每个子类都继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是一种事物表现出的
多种形态。一个接口多种实现。

继承

  1. >>> class Animal(object):
  2. ... def run(self):
  3. ... print("animal is running")
  4. ...
  5. >>> class Dog(Animal):
  6. ... pass
  7. ...
  8. >>> dog1 = Dog()
  9. >>> dog1.run()
  10. animal is running

多继承

  1. class People(object):
  2.  
  3. def __init__(self,name,age):
  4. self.name = name
  5. self.age = age
  6. def say(self):
  7. print("%s say helllo"%self.name)
  8.  
  9. class Relation:
  10. def make_friends(self,obj):
  11. print("%s is making friends with %s"%(self.name,obj.name))
  12.  
  13. class Man(People,Relation):#在多继承的时候,如果两个父类都有init,会先继承左边的,并且只继承一个构造函数
  14. #python3广度优先,python2经典类按深度优先继承,新式类按广度优先继承
  15.  
  16. def __init__(self,name,age,money):
  17. #People.__init__(self,name,age) #这里重写的构造函数
  18. super(Man,self).__init__(name,age)#这里重写的构造函数
  19. self.money = money
  20. print("%s is born with %s money"%(self.name,self.money))
  21.  
  22. def say(self):
  23. People.say(self) #在重写方法的时候调用父类的方法
  24. print("hahahahahahahha ")
  25. m1 = Man("nadech",22,10000)
  26. m1.say()
  27. m2 = Man("lsw",22,1)
  28. m1.make_friends(m2)
  29.  
  30. 输出结果<<<<

nadech is born with 10000 money
nadech say helllo
hahahahahahahha
lsw is born with 1 money
nadech is making friends with lsw

  1.  

多态

  1. # Author:nadech
  2. # 多态就是一个接口多个调用,在父类的方法中实现一个接口,每个子类的对象调用时有不同的输出
  3. class Animal(object):
  4. def __init__(self,name):
  5. self.name = name
  6. def talk(self):
  7. pass
  8.  
  9. @staticmethod #静态方法,我们会在接下来一节中仔细介绍
  10. def animal_talk(obj):
  11. obj.talk()
  12.  
  13. class Dog(Animal):
  14. def talk(self):
  15. print("wow wow")
  16.  
  17. class Cat(Animal):
  18. def talk(self):
  19. print("meow")
  20. d = Dog("狗狗")
  21. c = Cat("猫猫")
  22. Animal.animal_talk(c)
  23. Animal.animal_talk(d)

python笔记十五(面向对象及其特性)的更多相关文章

  1. Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)

    Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...

  2. Python笔记(十五)_异常处理

    try-except语句 try: 被检测代码 except Exception [as reason]: 出现异常后的处理代码 例: try: sum = 1+' f=open('未定义文件.txt ...

  3. Java笔记(十五)……面向对象IV多态(polymorphism)

    概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...

  4. Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块

    Python第十五天  datetime模块 time模块   thread模块  threading模块  Queue队列模块  multiprocessing模块  paramiko模块  fab ...

  5. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  6. python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)

    python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...

  7. 孤荷凌寒自学python第二十五天初识python的time模块

    孤荷凌寒自学python第二十五天python的time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 通过对time模块添加引用,就可以使用python的time模块来进行相关的时间操 ...

  8. 孤荷凌寒自学python第十五天python循环控制语句

    孤荷凌寒自学python第十五天python循环控制语句 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中只有两种循环控制语句 一.while循环 while 条件判断式 1: ...

  9. Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)

    Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装:            将一些东西封装到一个地方,你还可以取出来( ...

随机推荐

  1. DMO节点内部插入的常用方法与区别

    1.DOM内部插入append()与appendTo() 动态创建的元素是不够的,它只是临时存放在内存中,最终我们需要放到页面文档并呈现出来.那么问题来了,怎么放到文档上? 这里就涉及到一个位置关系, ...

  2. Python/模块与包之模块

    Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...

  3. Docker学习(1)安装

    1. Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱 ...

  4. POJ-2996 Help Me with the Game---模拟棋子

    题目链接: https://vjudge.net/problem/POJ-2996 题目大意: 给出白方和黑方的棋子和对应的坐标,输出该副棋盘的样子 1,棋盘中大写字母表示的是白方棋子,小写是黑方.2 ...

  5. 格式化输出prettify()

    BeautifulSoup的格式化输出函数: print(soup.prettify())

  6. [HNOI 2011]数学作业

    Description 小 C 数学成绩优异,于是老师给小 C 留了一道非常难的数学作业题: 给定正整数 N 和 M,要求计算 Concatenate (1 .. N) Mod M 的值,其中 Con ...

  7. ●POJ 2828 Buy Tickets

    题链: http://poj.org/problem?id=2828 题解: 线段树. 逆向考虑这个过程.最后的序列S共有n个元素. 先看最后一个人,如果他插入到第i位,那么他最终的位置就是当前序列S ...

  8. IO复用

    IO复用:使得程序能同时监听多个文件描述符 select: select在一段指定的时间内,监听用户感兴趣的文件描述符的 读.写.异常事件. select(int nfds,fd_set* readf ...

  9. bzoj4830 hnoi2017 抛硬币

    题目描述 小 A 和小 B 是一对好朋友,他们经常一起愉快的玩耍.最近小 B 沉迷于**师手游,天天刷本,根本无心搞学习.但是已经入坑了几个月,却一次都没有抽到 SSR,让他非常怀疑人生.勤勉的小 A ...

  10. Bubble Cup X - Finals [Online Mirror]

    来自FallDream的博客,未经允许,请勿转载,谢谢. 组了个菜鸡队打cf上的ACM比赛 比较快做完了8题但是菜的抠脚罚时巨多,所以最后被顶到了19名(居然没出首页) 自己的号自从上次疯狂掉分就没动 ...