Python面向对象编程(一)
2016-08-05 17:38
471 查看
第1个:面向对象基础
1、python 支持 函数式 + 面向对象 编程
2、函数式编程实现发送邮件功能
第2个:面向对象编程和函数式编程对比
创建类,类里边是方法
创建对象
对象调用类里的方法
函数式:
面向对象:
什么时候用面向对象?
有共同的参数,且将参数值一次性封装到对象,以后在对象中取值
第3个:面向对象中对象和类的关系
self是什么鬼?
self是一个python自动会给传值的参数
那个对象执行方法,self就是谁!
第4个:面向对象之构造方法
类中有一个特殊的方法init,类() 自动被执行。
init方法为 构造方法!
第5个:面向对象之应用场景实例
面向对象三大特性:封装、继承、多态(python没有意义)
上边的例子为特性之一的:封装。
第6个:面向对象之对象中封装对象
自带类:str,list,dict,tuple,set
自定义类:
class foo:
def bar(self):
pass
第7,8个:面向对象之对象中封装对象2,3
第9,10个:面向对象之单继承
1、可以多继承。
2、继承是把上边的东西拿下来。
3、如果本类中存在,自己的优先执行。
----------------------------------
重要!阅读源码会经常用到。
第11,12个:面向对象之多继承
1、python 支持 函数式 + 面向对象 编程
2、函数式编程实现发送邮件功能
def mail (mail,message): print ("发送") return True mail("lalala", "好") ------------------------------- 面向对象:类,对象 #创建类 class foo: #方法 def mail (self,mail,message): print ("发送") return True #创建对象 obj = foo() #通过对象执行方法 obj.mail("lalala", "好")
第2个:面向对象编程和函数式编程对比
创建类,类里边是方法
创建对象
对象调用类里的方法
函数式:
def fetch(host,usernam,password,sql): pass def create(host,usernam,password,sql): pass def remove(host,usernam,password,sql): pass remove(127.0.0.1,sa,sa,select * from user;)
面向对象:
class sqlhelp: def fetch(self,host,usernam,password,sql): pass def create(self,host,usernam,password,sql): pass def remove(self,host,usernam,password,sql): pass obj = sqlhelp() obj.fetch(.......) -------------------------------------------- class sqlhelp: def fetch(self,sql): pass def create(self,sql): pass def remove(self,sql): pass obj = sqlhelp() #把host,usernam,pwd封装到对象里 obj.host="127.0.0.1" obj.usernam="lala" obj.pwd="lalala" obj.fetch("select * from user") !#方法中的self就相当于obj定义的host,usernam,pwd三个值
什么时候用面向对象?
有共同的参数,且将参数值一次性封装到对象,以后在对象中取值
第3个:面向对象中对象和类的关系
self是什么鬼?
self是一个python自动会给传值的参数
那个对象执行方法,self就是谁!
第4个:面向对象之构造方法
class sqlhelp: def __init__(self): print("自动执行init") def fetch(self,sql): pass obj = sqlhelp() #创建对象=类名() ,在方法中自动执行一个init函数 ------------------------------------------- class sqlhelp: def __init__(self,a1,a2,a3): print("自动执行init") self.host=a1 self.user=a2 self.pwd=a3 def fetch(self,sql): pass obj = sqlhelp("xietong.live","sa","123456") obj.fetch("select * from user")
类中有一个特殊的方法init,类() 自动被执行。
init方法为 构造方法!
第5个:面向对象之应用场景实例
class person: def __init__(self,name,age,money): self.name=name self.age=age self.money=money def shop(self): self.money=self.money-2 la= person("hk",26,1000) la.shop() print(la.money)
面向对象三大特性:封装、继承、多态(python没有意义)
上边的例子为特性之一的:封装。
第6个:面向对象之对象中封装对象
自带类:str,list,dict,tuple,set
自定义类:
class foo:
def bar(self):
pass
class c1: def __init__(self,name,obj): self.name=name self.obj=obj class c2: def __init__(self, name, age): self.name = name self.age = age def show(self): print(self.name) c2_obj = c2("aa",11) print(c2_obj.name) print(c2_obj.age) c1_obj = c1("kk",c2_obj) print(c1_obj.name) print(c1_obj.obj.age) #c1_obj.obj = c2_obj
第7,8个:面向对象之对象中封装对象2,3
class c1: def __init__(self,name,obj): self.name=name self.obj=obj class c2: def __init__(self, name, age): self.name = name self.age = age def show(self): print(self.name) class c3: def __init__(self,money,aaa): self.money = money self.aaa= c1_obj c2_obj = c2("aa",11) print(c2_obj.name) print(c2_obj.age) c1_obj = c1("kk",c2_obj) print(c1_obj.name) print(c1_obj.obj.age) #c1_obj.obj = c2_obj c3_obj = c3(1000,c1_obj) print(c3_obj.aaa.obj.name) #c3_obj.aaa = c1_obj #c3_obj.aaa.obj = c2_obj #c2_obj.name = a print(c3_obj.aaa.obj.show()) #返回为None,因为方法中没有返回值
第9,10个:面向对象之单继承
1、可以多继承。
2、继承是把上边的东西拿下来。
3、如果本类中存在,自己的优先执行。
class f1: #父类、基类 def show(self): 3 print("show") def foo(self): print(self.name) class f2(f1): #子类、派生类 7 def __init__(self,name): self.name = name def bar(self): print("bar") def show(self): print("f2show") obj=f2("alex") obj.foo() #print(obj.show())
----------------------------------
重要!阅读源码会经常用到。
class s1: def f1(self): self.f2() def f2(self): pass class s2(s1): def f3(self): self.f1() ''' def f1(self): self.f2() #拷贝的s1里的f1.self等于obj=s2,执行自己的f2 ''' def f2(self): print(123) #obj = s1() #obj.f1() #执行s1里的f1、f2 obj = s2() obj.f3() #执行s2里的f3,把s1里的f1拿下来了,再执行本类中的f2,输出结果为123
第11,12个:面向对象之多继承
class c0(): def f2(self): print(12) class c1(c0): def f0(self): print(123) class c2(): def f2(self): print("c2") class c3(c1,c2): #继承关系左边的优先级高 def f3(self): print(67) obj = c3() obj.f2()
相关文章推荐
- python+selenium环境配置(windows7环境)
- 【python入门】学习字典的随笔,附使用字典做一个学生管理系统
- python中的yield浅析(每次在用到的时候都感觉逻辑很混乱,多看一下这个)
- Java,Python和C依然是主流开发语言
- 【python】unittest中常用的assert语句
- 用NotePad++运行Python时输出中文
- python项目打包成可执行的exe文件
- python 模块的__name__
- python-program
- python生成一个1到n的队列
- 用NotePad++来运行Python文件
- eclipse 安装python后pydev不出现
- 用python 装饰器打log
- windows 下python、Numpy、Matplotlib安装以及配置
- Python监控日志程序
- python urllib2详解及实例
- Python学习笔记:list,tuple和str
- 成功解决在Python文件上右键菜单无“Edit with IDLE”选项
- python字符串连接的三种方法及其效率、适用场景详解
- python学习第十五天 -面向对象之继承和多态