经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » Python » 查看文章
Python——面向对象(初级篇)
来源:cnblogs  作者:小拇哥  时间:2018/10/22 16:28:45  对本文有异议

1.如何创建类

  1. class 类名:
  2. pass

2.如何创建方法

  1. 构造方法:
  2. __init__
  3. obj = 类名('a1')
  4. 普通方法:
  5. obj = 类名('xxx')
  6. obj.普通方法名()

3.图解面向对象的创建和执行

4.面向对象三大特性之一:封装

  1. '''定义'''
  2. class Bar:
  3. def __init__(self,name,age):
  4. self.n = name
  5. self.a = age
  6. '''执行'''
  7. b1 = Bar('admin',26)
  8. b2 = Bar('qq',48)

  4.1 普通方法与构造方法对比:

 

5.面向对象三大特性之二:继承

  1. #*****创建父系类******
  2. class Beast: #动物的功能
  3. def eat(self):
  4. print(' %s吃'%(self.name))
  5. def drink(self):
  6. print(' %s喝'%(self.name))
  7. def shit(self):
  8. print(' %s拉'%(self.name))
  9. def pee(self):
  10. print(' %s撒' % (self.name))
  11. #********创建猫的 类******
  12. class Cat(Beast): #猫继承动物的功能
  13. def __init__(self,name):
  14. self.name = name
  15. self.breed = ''
  16. def fig(self):
  17. print('%s\n'%(self.name),'喵喵叫')
  18. #******* 创建狗的 类********
  19. class Dog(Beast): #狗继承动物的功能
  20. def __init__(self,name):
  21. self.name = name
  22. self.breed = ''
  23. def fig(self):
  24. print('%s\n'%(self.name),'汪汪叫')
  25. '''执行'''
  26.  
  27. '''猫的部分功能执行'''
  28. a = Cat('')
  29. a.fig()
  30. a.eat()
  31. '''狗的部分功能执行'''
  32. b = Dog('')
  33. b.fig()
  34. b.drink()

 6.面向对象三大特性三:多态继承

   6.1 多态继承案列一:

  1. 1 class F_0:
  2. 2 def a(self):
  3. 3 print('F_0.a')
  4. 4 class F0(F_0):
  5. 5 def a1(self):
  6. 6 print('F0.a')
  7. 7
  8. 8 class F1(F0):
  9. 9 def a1(self):
  10. 10 print('F1.a')
  11. 11
  12. 12 class F2():
  13. 13 def a(self):
  14. 14 print('F2.a')
  15. 15
  16. 16 class S(F1,F2):
  17. 17 pass
  18. 18
  19. 19 #*****执行*****
  20. 20
  21. 21 obj = S()
  22. 22 obj.a() # F_0.a

  过程:对象obj 现在F1中找a(),F1中没有,在F1的父系(F0)中找,如果F0中没有,再去F0的父系(F_0)中找,如果有,就打印,不在去F2中找,如果没有,就去F2中找。执行过程:左侧优先,一条道走到黑。具体如图展示:

  6.2 多态继承案列二:(两个类有交集的类)

  1. 1 class Base:
  2. 2 def a2(self):
  3. 3 print('Base.a')
  4. 4 class F0(Base):
  5. 5 def a1(self):
  6. 6 print('F0.a')
  7. 7
  8. 8 class F1(F0):
  9. 9 def a1(self):
  10. 10 print('F1.a')
  11. 11
  12. 12 class F2(Base):
  13. 13 def a(self):
  14. 14 print('F2.a')
  15. 15
  16. 16 class S(F1,F2):
  17. 17 pass
  18. 18
  19. 19 obj = S()
  20. 20 obj.a() # F2.a
  21. 21 obj.a2() #Base.a

  Base 类是类F1和F2的交集。过程:对象obj 现在F1中找a(),F1中没有,在F1的父系(F0)中找,如果F0中没有;开始从F2中找,F2中没有就去F2的父系(Base)中找。

结论:Base 如果是两个类的交集,那么执行过程是先执行左边的,再执行右边的,从右边执行过程中打印。如图所示:

   6.3 多态继承案列三:

  1. 1 class BaseReuquest():
  2. 2 pass
  3. 3
  4. 4 class RequestHandler(BaseReuquest):
  5. 5 def serve_forever(self):
  6. 6 #self 是obj
  7. 7 print('RequestHandler.serve_forever')
  8. 8 self.process_request()
  9. 9 def process_request(self):
  10. 10 print('RequestHandler.process_request')
  11. 11
  12. 12 class Minx:
  13. 13 def process_request(self):
  14. 14 print('Minx.process_request')
  15. 15
  16. 16
  17. 17 class Son(Minx,RequestHandler):
  18. 18 pass
  19. 19
  20. 20 obj = Son()
  21. 21 obj.serve_forever()

  过程: 创建4个类,执行obj.serve_forever()语句,根据左侧优先,先执行 类 Minx ,没有就执行右侧的 类 RequestHandler ,在类 RequestHandler 中找server_forever()方法执行,这时候会打印 print('RequestHandler.serve_forever');由于方法里面有self.process_request(),故而会执行 类 Minx 中 process_request() 的方法。原因是 self 是对象 obj ,所以:self.process_request() 也就是obj.process_request(),根据左侧优先,所以会现在 类Minx 中找process_request() 方法。如图所示:

 

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号