面向对象【day08】:问答式面相对象(四)
本节内容
1、什么是面向对象编程
2、什么是市类?什么是对象?又有什么关系?
3、什么时候适用面向对象?
4、self就是调用当前方法的对象
5、封装、继承、多态
6、字段方法
1、什么是面向对象编程?
- 以前使用函数
- 类 + 对象
2、什么是类什么是对象、又有什么关系?
class 类: def 函数1(): pass def 函数2(): pass # obj是对象,实例化的过程 obj = 类() obj.函数1()
============ 面向对象不好 ===============
============ 函数编程好
有时候,函数编程能实现?比较麻烦,
面向对象非常的就能实现
3、什么时候适用面向对象?
- 如果多个函数须传入多个共同的参数时
- 根据一个模版创建某些东西
- 应用场景
class SSH: def __init__(self, host,port,pwd,username): self.host = ... def connection(self): # 去创建连接 self.conn = 和服务器创建的连接对象() def close(self): # 关闭 self.conn.关闭 def upload(self): self.conn 使用连接上传文件 def cmd(self): self.conn 使用连接执行命令 obj = SSH(....) obj.connection() obj.upload() obj.close() obj = SSH(....) obj.connection() obj.cmd() obj.cmd() obj.upload() obj.upload() obj.cmd() obj.close()
函数式编程实现
def upload(): # 连接服务器 # 上传文件 # 关闭 def cmd(): # 连接服务器 # 执行命令 # 关闭 def upload_cmd(): # 连接服务器 # 上传文件 # 执行命令 # 关闭
4、self就是调用当前方法的对象
- 静态字段使用场景,每个对象中保存相同的东西时,可以使用静态字段
class Foo: # 静态字段 # 公有属性 country = "中国" def __init__(self, name,count): # 普通字段 # 普通属性 self.NAME = name self.Count = count def bar(self): pass obj1 = Foo('河南', 1000000) obj1.bar() obj2 = Foo('山东', 10000) obj2.bar()
5、封装、继承、多态
封装
- 类中封装了:字段、方法
- 对象中封装了:普通字段的值
class F1: def __init__(self,n): self.N = n print('F1') class F2: def __init__(self,arg1): self.a = arg1 print('F2') class F3: def __init__(self,arg2): self.b = arg2 print('F3') o1 = F1('alex') o2 = F2(o1) o3 = F3(o2) ####### 输出Alex:o3.b.a.N ####### # o3 = F3(o2) o3.b ==> o2 # o2 = F2(o1) o3.b.a o3.b o1 = F1('alex') o3.b.a.N
继承:
class F1: def __init__(self): print('F1') def a1(self): print('F1a1') def a2(self): print('F1a2') class F2(F1): def __init__(self): print('F2') def a1(self): self.a2() print('F2a1') def a2(self): print('F2a2') class F3(F2): def __init__(self): print('F3') def a2(self): print('F3a2') obj = F3() obj.a1() # F3a2 # F2a1
多态(多种形态):
pass
6、字段、方法
字段:
普通字段(保存在对象中)
静态字段(保存在类中)
方法:
普通方法(保存在类中,调用者对象,至少有self参数)
class F1: def __init__(self,name,.....): self.name = name ... def a1(self): print(self.name,....) obj = F1('alex0') obj.a1() class F1: def a1(self): print('alex') obj = F1() obj.a1()
静态方法(保存在类中,调用者类(无需创建对象),可以有任意个参数):
class F1: @staticmethod def a1(a1,a2): print('alex') F1.a1(1,2)
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。