python面向对象
来源:互联网 发布:罗马全面战争火攻算法 编辑:程序博客网 时间:2024/06/14 21:37
1。分类
- 面向过程编程:初学者容易接受,从上往下依次执行;
- 面向函数编程:将某功能的代码封装为一个函数,使用时仅调用函数;
(2+3)*2-1 jian(multi(add(2,3),2),1)
- 面向对象编程:对函数进行分类和封装….
class people: # 经典类class People(object): # 新式类,object类是所有类的基类/父类 def __init__(self,name,age): # 构造函数,当实例化对象时自动调用; self.name = name # 属性 self.age = age def run(self): # 方法 print "running...." def __del__(self): print "deleteing......" # 析构函数,删除实例化对象时自动调用;class Student(People): # Student是子类,继承People这个父类; passp1 = People("张策",18)p1.run()
2。面向对象的三个特性
a. 封装
封装:把内容统一放在一个地方,看成一个整体,(实例化对象self和类的属性绑定在一起);
- 访问封装内容的两种方式:
通过self去访问封装的内容;(self.name)
通过实例化的对象名去访问封装的内容;(p1 = People(“westos”,17) p1.age)
b. 继承
继承:子承父业
- 新名词:基类/派生类, 父类/子类, 新式类和经典类
- 多继承:
新式类: 广度优先继承;(python2.x和python3.x均支持)
经典类:深度优先继承;(python2.x支持,python3.x没有经典类)
- 注意:
类的方法中可以传递一个对象;
c. 多态
如果子类调用的方法,子类没有,父类有,运行父类;
如果子类调用的方法,子类有,父类也有,只运行子类的;
3. 面向对象进阶
- 类变量,全局变量,在内存中只存储一份;
- 普通的对象属性,每个对象中都需要存储一份;
4. 方法
- 实例化方法:第一个参数为self(实例化本身);
- 类方法:第一个参数是cls(类本身);通过@classmethod装饰器实现;
- 静态方法:第一个参数既不是self也不是cls;通过@staticmethod方法实现;
5. 特殊属性
#!/usr/bin/env python#coding:utf-8"""file:date,pydate:9/5/17 2:23 PMauthor:Hudesc:"""class DateTest(object): def __init__(self,year=0,month=0,day=0): self.year=year self.month=month self.day=day def show_date(self): return "Year:{}\nMonth:{}\nDay:{}".format(self.year,self.month,self.day) @classmethod def get_str_date(cls,s): year,month,day=map(int,s.split("-")) date1=cls(year,month,day) return date1d=DateTest.get_str_date("2017-09-05")print d.show_date()
6. 类的特殊成员
#!/usr/bin/env python#coding:utf-8"""file:page,pydate:9/5/17 3:56 PMauthor:Hudesc:"""class Pager: def __init__(self,require_page): self.require_page=require_page self.per_items=10 @property def start(self): val = ((self.require_page-1)*self.per_items)+1 return val @property def end(self): val = (self.require_page)*self.per_items return valp=Pager(2)print p.startprint p.end
- python 面向对象
- python面向对象初步
- python面向对象
- Python面向对象详解
- python面向对象编程
- python面向对象
- python 面向对象
- python 面向对象编程
- python面向对象编程
- python面向对象编程
- python 面向对象笔记
- Python 面向对象编程
- Python面向对象编程
- python面向对象1
- Python面向对象详解
- Python 面向对象编程
- python面向对象1
- Python面向对象基础
- C语言实现atoi和itoa(字符串与数字之间的转化)
- gogs的windows安装
- codeforces 848C C. Goodbye Souvenir cdq分治
- jvm的简单了解及实现
- 什么是动态代理
- python面向对象
- 工厂模式
- jmeter请求结果乱码问题
- python3 入门指南
- Android中推荐用SparseArray替换HashMap<Integer,Object>
- iOS学习笔记-119.多线程18——NSOperationQueue自定义NSOperation执行一个操作的取消
- AOJ0118 Property Distribution(DFS)
- python简单游戏设计
- Window 下安装redis