Python之类一

#!/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('[email protected]', '测试发送邮件')
#     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('[email protected]', '测试发送邮件')
#     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)

你可能感兴趣的:(经验分享)