python笔记十五(面向对象及其特性)
一、面向对象:
class(类):一类拥有共同属性对象的抽象;定义了这些对象的属性和方法
object(对象):是一个类实例化后的实例,类必须经过实例化才可以在程序中调用;
由于之前学习过java,对类和对象已经有了一定的了解了,就不再详细介绍。
二、特性
encapsulation(封装):将内部的内容封装起来了。例如数据的设置、访问和处理结果我们都可以通过调用实例的方法直接获取,而不需要知道内部的处理逻辑。
inheritance(继承):一个类可以派生出子类,父类中定义的属性和方法被子类自动继承
polymorphism(多态):一个基类派生出了不同的子类,且每个子类都继承了同样的方法名的同时又对父类的方法做了不同的实现,这就是一种事物表现出的
多种形态。一个接口多种实现。
继承
>>> class Animal(object):
... def run(self):
... print("animal is running")
...
>>> class Dog(Animal):
... pass
...
>>> dog1 = Dog()
>>> dog1.run()
animal is running
多继承
class People(object): def __init__(self,name,age):
self.name = name
self.age = age
def say(self):
print("%s say helllo"%self.name) class Relation:
def make_friends(self,obj):
print("%s is making friends with %s"%(self.name,obj.name)) class Man(People,Relation):#在多继承的时候,如果两个父类都有init,会先继承左边的,并且只继承一个构造函数
#python3广度优先,python2经典类按深度优先继承,新式类按广度优先继承 def __init__(self,name,age,money):
#People.__init__(self,name,age) #这里重写的构造函数
super(Man,self).__init__(name,age)#这里重写的构造函数
self.money = money
print("%s is born with %s money"%(self.name,self.money)) def say(self):
People.say(self) #在重写方法的时候调用父类的方法
print("hahahahahahahha ")
m1 = Man("nadech",22,10000)
m1.say()
m2 = Man("lsw",22,1)
m1.make_friends(m2) 输出结果<<<<
nadech is born with 10000 money
nadech say helllo
hahahahahahahha
lsw is born with 1 money
nadech is making friends with lsw
多态
# Author:nadech
# 多态就是一个接口多个调用,在父类的方法中实现一个接口,每个子类的对象调用时有不同的输出
class Animal(object):
def __init__(self,name):
self.name = name
def talk(self):
pass @staticmethod #静态方法,我们会在接下来一节中仔细介绍
def animal_talk(obj):
obj.talk() class Dog(Animal):
def talk(self):
print("wow wow") class Cat(Animal):
def talk(self):
print("meow")
d = Dog("狗狗")
c = Cat("猫猫")
Animal.animal_talk(c)
Animal.animal_talk(d)
python笔记十五(面向对象及其特性)的更多相关文章
- Python进阶(十五)----面向对象之~继承(单继承,多继承MRO算法)
Python进阶(十五)----面向对象之~继承 一丶面向对象的三大特性:封装,继承,多态 二丶什么是继承 # 什么是继承 # b 继承 a ,b是a的子类 派生类 , a是b的超类 基类 父类 # ...
- Python笔记(十五)_异常处理
try-except语句 try: 被检测代码 except Exception [as reason]: 出现异常后的处理代码 例: try: sum = 1+' f=open('未定义文件.txt ...
- Java笔记(十五)……面向对象IV多态(polymorphism)
概述 定义:某一类事物的多种存在形态. 例:动物中猫,狗. 猫这个对象对应的类型是猫类型 猫 x = new 猫(); 同时猫也是动物中的一种,也可以把猫称为动物. 动物 y = new 猫(); 动 ...
- Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fabric模块
Python第十五天 datetime模块 time模块 thread模块 threading模块 Queue队列模块 multiprocessing模块 paramiko模块 fab ...
- python笔记 - day7-1 之面向对象编程
python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...
- python3.4学习笔记(十五) 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
python3.4学习笔记(十五) 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) python print 不换行(在后面加上,end=''),prin ...
- 孤荷凌寒自学python第二十五天初识python的time模块
孤荷凌寒自学python第二十五天python的time模块 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 通过对time模块添加引用,就可以使用python的time模块来进行相关的时间操 ...
- 孤荷凌寒自学python第十五天python循环控制语句
孤荷凌寒自学python第十五天python循环控制语句 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中只有两种循环控制语句 一.while循环 while 条件判断式 1: ...
- Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理)
Python进阶(十六)----面向对象之~封装,多态,鸭子模型,super原理(单继承原理,多继承原理) 一丶封装 , 多态 封装: 将一些东西封装到一个地方,你还可以取出来( ...
随机推荐
- 页面获取Web控件ID不能正常获取,它惹得祸
今天碰到个比较奇葩的问题,因为动了一下目标框架,又原来的4.5.1改为3.5,然后又改回来了4.5.1,结果运行项目的时候发现界面js的计算,不能正常获值计算. 于是就开始找问题呗,先是发现这个二手项 ...
- The python debugger(PDB)的简介
转自:http://www.cnblogs.com/wei-li/archive/2012/05/02/2479082.html 学习Python调试,最好的资料当然是官方文档和(pdb)help了, ...
- uva 1411 Ants
题意: 一个平面上有n个黑色的点,n个白色的点,要求黑色的点与白色点之间一一配对,且线段之间不相交. 思路: 线段不相交并不好处理,想了很久想不出,所以看了蓝书的讲解. 一个很明显的结论是,不相交的线 ...
- [论文阅读] Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks(MTCNN)
相关论文:Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks 概论 用于人脸检测和对 ...
- Http协议消息报头
哎.不知道怎么写Http协议... 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议. HTTP基于TCP/IP通信协议来传递数据 ...
- Opencv在mac系统的安装与试用
1.在mac终端内,使用brew安装opencv3,这时我的opencv被安装到/usr/local/Cellar/opencv3/3.2.0内. 2.新建xcode 项目,选择command lin ...
- 机器学习基石:01 The Learning Problem
什么时候适合用机器学习算法? 1.存在某种规则/模式,能够使性能提升,比如准确率: 2.这种规则难以程序化定义,人难以给出准确定义: 3.存在能够反映这种规则的资料. 所以,机器学习就是设计算法A,从 ...
- [HAOI2008]下落的圆盘
Description 有n个圆盘从天而降,后面落下的可以盖住前面的.求最后形成的封闭区域的周长.看下面这副图, 所有的红 色线条的总长度即为所求. Input 第一行为1个整数n,N<=100 ...
- 【BZOJ2705】【Sdoi2012】Longge的问题
Description Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N,你需要求出\(\Sigma gcd(i, N) (1 \leq i \leq N ...
- allocator
allocator: 通常c++内存配置和释放操作是这样的: class Fo{}; Fo *p = new Fo; delete p; new算式主要有三个阶段: 调用::operator new配 ...