1、反射

通过字符串的形式,导入模块
再通过字符串的形式,去模块中寻找指定的函数并执行
eg:__import__(模块)

更加字符串的形式去对象(某个模块)中操作其成员

常用方法:

getattr()

hasattr()

setattr()

delattr()

扩展:

r = __import__('www.iclinux.com',fromlist=True)

反射示例:

使用反射,无需依照函数的数量来写判断了

2、面向对象基础:

C# Java 只能使用面向对象编程

Pyhon Ruby:即可函数编程又可面向对象编程

面向对象编程不是所有的情况都适用

  • 面向过程:根据业务逻辑从上到下写垒代码
  • 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可
  • 面向对象:对函数进行分类和封装,让开发“更快更好更强...
class  iclinux:
def fetch(self,backend):
pass
def add_record(self,backend,record)
pass obj = iclinux()
obj.fetch('xxx')
obj.add_record('xxx',yyy)

class:关键字,表示类

创建对象,类名称后冒号即可

类中函数第一个参数必须是self

类中函数叫做方法

__init__:对象中称为构造方法,也可称为初始化

__del__:解释器销毁对象时自动调用,对象中称为析构方法

self为形式参数,python内部传递

obj=》self  ;;;‘xxx’==》backend

4.1封装

使用封装,参数制药传递异常,后面都可以使用

使用场景:当统一类型的方法具有相同参数时,直接封装到对象即可
使用场景:把类当作模板,创建多个对象(对象内封装的数据不一样)

4.2继承:

父类也叫基类,子类也叫派生类

其他语音如java、c#只能集成一个父类,python的类可同事集成多个类,继承顺序和优先级为:自己》左》左父》右》右父

4.3多态

Pyhon不支持Java和C#这一类强类型语言中多态的写法,但是原生多态,其Python崇尚“鸭子类型”。

class F1:
pass class S1(F1): def show(self):
print 'S1.show' class S2(F1): def show(self):
print 'S2.show' def Func(obj):
print obj.show() s1_obj = S1()
Func(s1_obj) s2_obj = S2()
Func(s2_obj)

eg

5、接口

通常以I开头,只写方法,不写内容。接口上的方法,类里面都要有实现

接口按类型可分为代码级别的端口和业务级别的端口

6、练习

游戏人生程序

1、创建三个游戏人物,分别是:

  • 苍井井,女,18,初始战斗力1000
  • 东尼木木,男,20,初始战斗力1800
  • 波多多,女,19,初始战斗力2500

2、游戏场景,分别:

  • 草丛战斗,消耗200战斗力
  • 自我修炼,增长100战斗力
  • 多人游戏,消耗500战斗力
# -*- coding:utf-8 -*-

# #####################  定义实现功能的类  #####################

class Person:

    def __init__(self, na, gen, age, fig):
self.name = na
self.gender = gen
self.age = age
self.fight =fig def grassland(self):
"""注释:草丛战斗,消耗200战斗力""" self.fight = self.fight - 200 def practice(self):
"""注释:自我修炼,增长100战斗力""" self.fight = self.fight + 200 def incest(self):
"""注释:多人游戏,消耗500战斗力""" self.fight = self.fight - 500 def detail(self):
"""注释:当前对象的详细情况""" temp = "姓名:%s ; 性别:%s ; 年龄:%s ; 战斗力:%s" % (self.name, self.gender, self.age, self.fight)
print temp # ##################### 开始游戏 ##################### cang = Person('苍井井', '女', 18, 1000) # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800) # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500) # 创建波多多角色 cang.incest() #苍井空参加一次多人游戏
dong.practice()#东尼木木自我修炼了一次
bo.grassland() #波多多参加一次草丛战斗 #输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail() cang.incest() #苍井空又参加一次多人游戏
dong.incest() #东尼木木也参加了一个多人游戏
bo.practice() #波多多自我修炼了一次 #输出当前所有人的详细情况
cang.detail()
dong.detail()
bo.detail() 游戏人生

最新文章

  1. LeetCode 209 Minimum Size Subarray Sum
  2. 【思路】-OctService服务类
  3. OC基础--结构体 枚举做类成员属性
  4. 5、 Android 之Fragment
  5. MongoDB初学笔记
  6. 基于android平台的斗地主AI
  7. ACM比赛经验
  8. Linux操作系统启动流程浅析
  9. C++专题 - Qt是什么
  10. 15-UIKit(view布局、Autoresizing)
  11. iOS app 的 ASLR
  12. seed实验——Set-UID Program Vulnerability实验
  13. 魅族pro 7详细打开Usb调试模式的方法
  14. 一、activiti工作流(workflow)入门介绍
  15. 实战!基于lamp安装wordpress详解-技术流ken
  16. A1119. Pre- and Post-order Traversals
  17. 【Git】Git常见错误
  18. 走进JDK(十)------HashMap
  19. Java垃圾回收理解
  20. django for 循环中,获取序号

热门文章

  1. 别让CDN的回源把你的服务器拖垮,采用正确的回源策略
  2. SpringMVC中,前台jsp封装参数,绑定参数,传递参数到后台controller的过程详解
  3. sublime前端插件以及常用快捷键
  4. mac下相关操作命令
  5. 【数据库-Azure SQL Database】JDBC 如何连接 SQL Azure 数据库
  6. Windows定时任务管理以及服务管理
  7. 精仿百思不得姐客户端应用iOS源码
  8. maven打包错误:No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
  9. mac下只遍历目录不遍历文件
  10. java导入Excel表格数据