1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224
| #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/10/18 16:14 # @Author : Ropon # @File : 22_01.py
#1、面向过程编程 #2、函数式编程 # def func(arg): # pass
# func(1) # func(2)
# 为什么要将某些函数写到指定文件中? # 对函数进行归类
# 函数式编程与面向对象编程区别: # 函数 # def email(em, text): # """ # 发送邮件 # """ # print(em, text) # # def msg(tel, text): # """ # 发送短信 # """ # print(tel, text) # # def webchat(num, text): # """ # 发送微信 # """ # print(num, text) # # if 1 == 1: # email('11@qq.com', '测试发送邮件') # msg('13xxxxxx', '测试发送短信') # webchat('ropon', '测试发送微信')
# 面向对象 # class Message: # def email(self, em, text): # """ # 发送邮件 # """ # print(em, text) # # def msg(self, tel, text): # """ # 发送短信 # """ # print(tel, text) # # def webchat(self, num, text): # """ # 发送微信 # """ # print(num, text) # # if 2 == 2: # obj = Message() # obj.email('11@qq.com', '测试发送邮件') # obj.msg('13xxxxxx', '测试发送短信') # obj.webchat('ropon', '测试发送微信')
# 对比: # 函数:定义简单、调用简单 # 面对对象:定义复杂、调用复杂 好处:归类,将某些类似的函数写在一起
# 总结: # 函数式编程可能比面向对象好 # Python中支持两种编程方式 # 面向对象方式格式 # 定义: # class 类名: 定义一个类 # def 函数名(self): 类中编写一个方法 # pass # 调用 # x1 = 类名() 创建一个对象或者说实例化一个对象 # x1.函数名() 调用对象中的一个方法 # 构造方法 # class Foo: # def __init__ (self, name): # 构造方法,目的进行数据初始化 # self.name = name # self.age = 18 # obj = Foo('测试') # print(obj.name) # 通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可
# 将数据封装到对象中,以供其他函数调用
# def func1(arg): # print(arg.name) # print(arg.os) # print(arg.cpus) # # class Ebs: # def __init__(self, name, os ,cpus): # self.name = name # self.os = os # self.cpus = cpus # # obj = Ebs('ebs-1', 'centos7.5', '4') # func1(obj)
# 1 查看用户信息 # 2 查看用户账单 # 3 购买抱枕 # 4 退出 # 请选择您需要做的操作:
# class UserInfo: # # def __init__(self): # self.name = None # # def info(self): # print('当前用户名称是{0}'.format(self.name)) # # def account(self): # print('用户{0}的账单是...'.format(self.name)) # # def shopping(self): # print('用户{0}购买了一个抱枕...'.format(self.name)) # # def login(self): # name = input('请输入用户名:') # passwd = input('请输入密码:') # if name == 'ropon' and passwd == '123': # self.name = name # while 1: # lst = ['查看用户信息', '查看用户账单', '购买抱枕', '退出'] # for num, index in enumerate(lst, 1): # print(num, index) # num = int(input('请选择您需要做的操作:')) # if num == 1: # self.info() # elif num == 2: # self.account() # elif num == 3: # self.shopping() # elif num == 4: # exit() # else: # print('非法选项,请重新选择') # else: # print('登录失败') # # obj = UserInfo() # obj.login()
# class Demo: # def __init__(self, name): # self.name = name # # def msg(self,text): # print(self.name, text) # # obj = Demo('ropon') # obj.msg('再次测试发送信息')
# 面向对象三大特性:封装、继承、多态 # 封装 # 将相关功能封装到一个类中 # 将数据封装到一个对象中
# 继承 # 编写格式 # class 子类名(父类名): # pass # 调用子类方法,优先在子类中找,如果找不到就到父类找 # 继承提高代码重用性 # 支持多继承(先找左/再找右)
# class Vhost: # def func1(self): # print('func1') # # class OpVhost(Vhost): # def func2(self): # print('func2') # # class LsVhost(OpVhost): # def func3(self): # print('func3') # # def func1(self): # print('LsVhost.func1') # # class Tvhost(LsVhost, OpVhost, Vhost): # def func4(self): # print('func4') # # obj = Tvhost() # obj.func3() # obj.func2() # obj.func1() # obj.func4()
# 多态 # 相同调用方式,不同的执行效果(多态性)
# class Site: # def list(self): # print('site.list') # # class Ftp: # def list(self): # print('ftp.list') # # class Db: # def list(self): # print('db.list') # # def func1(arg): # arg.list() # # obj = Site() # # obj = Ftp() # # obj = Db() # func1(obj)
|