python面向对象编程138讲_Python面向对象编程(一)

第1个:面向对象基础

1、python 支持 函数式 + 面向对象 编程

2、函数式编程实现发送邮件功能

1 def mail (mail,message):2 print ("发送")3 returnTrue4

5 mail("lalala", "好")6 -------------------------------

7 面向对象:类,对象8 #创建类9 classfoo:10 #方法11 def mail (self,mail,message):12 print ("发送")13 returnTrue14 #创建对象15 obj =foo()16 #通过对象执行方法17 obj.mail("lalala", "好")

第2个:面向对象编程和函数式编程对比

创建类,类里边是方法

创建对象

对象调用类里的方法

函数式:

1 def fetch(host,usernam,password,sql):2 pass3 def create(host,usernam,password,sql):4 pass5 def remove(host,usernam,password,sql):6 pass7 remove(127.0.0.1,sa,sa,select * from user;)

面向对象:

1 classsqlhelp:2 def fetch(self,host,usernam,password,sql):3 pass4 def create(self,host,usernam,password,sql):5 pass6 def remove(self,host,usernam,password,sql):7 pass8 obj =sqlhelp()9 obj.fetch(.......)10 --------------------------------------------

11 classsqlhelp:12 def fetch(self,sql):13 pass14 def create(self,sql):15 pass16 def remove(self,sql):17 pass18 obj =sqlhelp()19 #把host,usernam,pwd封装到对象里20 obj.host="127.0.0.1"

21 obj.usernam="lala"

22 obj.pwd="lalala"

23

24 obj.fetch("select * from user")25 !#方法中的self就相当于obj定义的host,usernam,pwd三个值

什么时候用面向对象?

有共同的参数,且将参数值一次性封装到对象,以后在对象中取值

第3个:面向对象中对象和类的关系

self是什么鬼?

self是一个python自动会给传值的参数

那个对象执行方法,self就是谁!

第4个:面向对象之构造方法

1 classsqlhelp:2

3 def __init__(self):4 print("自动执行init")5

6 def fetch(self,sql):7 pass8

9 obj = sqlhelp() #创建对象=类名() ,在方法中自动执行一个init函数10 -------------------------------------------

11 classsqlhelp:12

13 def __init__(self,a1,a2,a3):14 print("自动执行init")15 self.host=a116 self.user=a217 self.pwd=a318

19 def fetch(self,sql):20 pass21

22 obj = sqlhelp("xietong.live","sa","123456")23 obj.fetch("select * from user")

类中有一个特殊的方法init,类() 自动被执行。

init方法为 构造方法!

第5个:面向对象之应用场景实例

1 classperson:2 def __init__(self,name,age,money):3 self.name=name4 self.age=age5 self.money=money6

7 def shop(self):8 self.money=self.money-2

9

10 la= person("hk",26,1000)11 la.shop()12 print(la.money)

面向对象三大特性:封装、继承、多态(python没有意义)

上边的例子为特性之一的:封装。

第6个:面向对象之对象中封装对象

自带类:str,list,dict,tuple,set

自定义类:

class foo:

def bar(self):

pass

1 classc1:2 def __init__(self,name,obj):3 self.name=name4 self.obj=obj5 classc2:6 def __init__(self, name, age):7 self.name =name8 self.age =age9 def show(self):10 print(self.name)11

12 c2_obj = c2("aa",11)13 print(c2_obj.name)14 print(c2_obj.age)15 c1_obj = c1("kk",c2_obj)16 print(c1_obj.name)17 print(c1_obj.obj.age) #c1_obj.obj = c2_obj

第7,8个:面向对象之对象中封装对象2,3

1 classc1:2 def __init__(self,name,obj):3 self.name=name4 self.obj=obj5 classc2:6 def __init__(self, name, age):7 self.name =name8 self.age =age9 def show(self):10 print(self.name)11

12 classc3:13 def __init__(self,money,aaa):14 self.money =money15 self.aaa=c1_obj16

17

18 c2_obj = c2("aa",11)19 print(c2_obj.name)20 print(c2_obj.age)21

22 c1_obj = c1("kk",c2_obj)23 print(c1_obj.name)24 print(c1_obj.obj.age) #c1_obj.obj =c2_obj25

26 c3_obj = c3(1000,c1_obj)27 print(c3_obj.aaa.obj.name) #c3_obj.aaa =c1_obj28 #c3_obj.aaa.obj =c2_obj29 #c2_obj.name =a30 print(c3_obj.aaa.obj.show()) #返回为None,因为方法中没有返回值

第9,10个:面向对象之单继承

1、可以多继承。

2、继承是把上边的东西拿下来。

3、如果本类中存在,自己的优先执行。

1 classf1: #父类、基类2   def show(self):3 print("show")4   def foo(self):5     print(self.name)6 classf2(f1): #子类、派生类7def __init__(self,name):8     self.name =name9

10   def bar(self):11     print("bar")12

13   def show(self):14     print("f2show")15

16 obj=f2("alex")17 obj.foo()18 #print(obj.show())

----------------------------------

重要!阅读源码会经常用到。

1 classs1:2   def f1(self):3     self.f2()4   def f2(self):5     pass6

7 classs2(s1):8   def f3(self):9     self.f1()10 '''11 def f1(self):12 self.f2() #拷贝的s1里的f1.self等于obj=s2,执行自己的f213 '''14   def f2(self):15     print(123)16

17 #obj =s1()18 #obj.f1() #执行s1里的f1、f219

20 obj =s2()21 obj.f3() #执行s2里的f3,把s1里的f1拿下来了,再执行本类中的f2,输出结果为123

第11,12个:面向对象之多继承

1 classc0():2   def f2(self):3     print(12)4

5 classc1(c0):6   def f0(self):7     print(123)8

9 classc2():10   def f2(self):11     print("c2")12

13 classc3(c1,c2): #继承关系左边的优先级高14   def f3(self):15     print(67)16

17 obj =c3()18 obj.f2()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值