Python之类一

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)