面向对象:

1、简述编写和执行类中的方法的流程

class Foo:             #类的编写
def func():
print("我爱你")
obj = Foo() #类的调用和执行
obj.func()

2、面向对象的三大特征?
  封装、继承、多态

  封装:

    归类将相关的功能封装到一个类中、

    打包:将数据封装到一个对象中

  继承:

    自己没有找老爸要

    当有两个类或者多个类,其中都有共同的方法时,为了避免代码重复编写,把它放到父亲中

  多态:

    python原生支持多态,崇尚鸭子模型,由于python函数传参时无法指定类型

    def func (arg):  #arg可以时多种类型,只要其中有send方法即可。

      arg.send()

3、什么是构造方法?

  __init__

4、面向对象中为什么要有继承?

  提高代码的复用性,调用原则:先找self所在的函数中,没有的话找父亲要,父亲没有再去找爷爷

5、python多继承的原则?
  先从左到右

6、面向对象方式的格式?

定义:
class 类名: - 定义了一个类
def 函数名(self): - 在类中编写了一个"方法"
pass
调用:
x1 = 类名() - 创建了一个对象/实例化一个对象
x1.函数名() - 通过对象调用其中一个方法.

7、构造方法

class Foo:
def __init__(self,name): #构造方法,目的进行数据初始化.
self.name = name
self.age = 18
obj = Foo('侯明魏') #通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可.
应用:1,将数据封装到对象中,以供自己再方法中调用
   2,将数据封装到对象中,以供其它函数调用

8、面向对象代码如何编写?

  方式一、归类+提取公共值

  方式二、正向编写。在指定类中编写和当前类相关的所有代码 + 提取公共值

9、self到底是谁?

  self参数时python帮助我们自动传参

  如果执行面向对象中的方法时,前面必须有一个对象:xxx.func()

 s15day22 面向对象 

 接下来内容:
第一部分:面向对象
第二部分:网络编程
第三部分:并发编程 内容回顾:
1. 面向过程 2. 函数式编程 def func(arg):
pass func(1)
func(2) 3. 为什么要将某些函数写在指定文件中?
对函数进行归类 今日内容:
1. 函数式编程和面向对象的对比 2. 面向对象代码如何编写 3. 面向对象三大特性:封装/继承/多态 内容详细:
1. 函数式编程和面向对象的对比 a. round 1 请开发一个消息提醒的功能(邮件/短信/微信) 函数:
def email(em,text):
"""
发送邮件
:return:
"""
print(em,text) def msg(tel,text):
"""
发送短信
:return:
"""
print(tel,text) def wechat(num,text):
"""
发送微信
:return:
"""
print(num,text) # 编写功能:假设用户购买课程,然后给alex发送提醒;
if 1==1:
msg('','张进购买了一个学位课')
email('alex@sb.com','张进购买了一个学位课')
wechat('xxxx','张进购买了一个学位课') 面向对象:
class Message:
def email(self, em, text):
"""
发送邮件
:return:
"""
print(em,text) def msg(self, tel, text):
"""
发送短信
:return:
"""
print(tel,text) def wechat(self, num, text):
"""
发送微信
:return:
"""
print(num,text) # 编写功能:假设用户购买课程,然后给alex发送提醒;
if 1==1:
obj = Message()
obj.email('alex@sb.com', '张进购买了一个学位课')
obj.msg('','张进购买了一个学位课')
obj.wechat('xxxx','张进购买了一个学位课') 对比:
函数:定义简单/调用简单
面向对象:定义复杂/调用复杂 好处:归类,将某些类似的函数写在一起 总结:
1. 函数式编程可能会比面向对象好.
2. Python中支持两种编程方式.
3. 面向对象方式格式:
定义:
class 类名: - 定义了一个类 def 函数名(self): - 在类中编写了一个"方法"
pass
调用:
x1 = 类名() - 创建了一个对象/实例化一个对象
x1.函数名() - 通过对象调用其中一个方法. 4. 示例:
class Account:
def login(self):
user = input('请输入用户名:')
pwd = input('请输入密码:')
if user == 'alex' and pwd == 'sb':
print('登录成功')
else:
print('登录失败') obj = Account()
obj.login() b. round 2 打印
"""
完成以下功能:
老狗/20岁/男/上山去砍柴
老狗/20岁/男/开车去东北
老狗/20岁/男/喜欢大宝剑
""" # ##################### 函数版本 #########################
"""
def kc(name,age,gender):
data = "%s,性别%s,今年%s岁,喜欢上山砍柴" %(name,gender,age)
print(data) def db(name,age,gender):
data = "%s,性别%s,今年%s岁,喜欢开车去东北" %(name,gender,age)
print(data) def bj(name,age,gender):
data = "%s,性别%s,今年%s岁,喜欢大宝剑" %(name,gender,age)
print(data) kc('老狗',20,'男')
kc('老狗',20,'男')
db('老狗',20,'男')
bj('老狗',20,'男')
"""
# ##################### 面向对象 #########################
class LaoGou: def __init__(self,name,age,gender): # 特殊的方法,如果 类名() ,则该方法会被自动执行 (构造方法)
self.n1 = name
self.n2 = age
self.n3 = gender def kc(self):
data = "%s,性别%s,今年%s岁,喜欢上山砍柴" %(self.n1,self.n3,self.n2)
print(data) def db(self):
data = "%s,性别%s,今年%s岁,喜欢开车去东北" %(self.n1,self.n3,self.n2)
print(data) def bj(self):
data = "%s,性别%s,今年%s岁,喜欢大宝剑" %(self.n1,self.n3,self.n2)
print(data) obj = LaoGou('老狗',20,'男')
obj.kc()
obj.db()
obj.bj() 总结:
1. 构造方法
示例一:
class Foo: def __init__(self,name): 构造方法,目的进行数据初始化.
self.name = name
self.age = 18 obj = Foo('侯明魏') 通过构造方法,可以将数据进行打包,以后使用时,去其中获取即可. 示例二:
class Bar:
pass
obj = Bar() 2. 应用
a. 将数据封装到对象中,以供自己在方法中调用
class FileHandler:
def __init__(self,file_path):
self.file_path = file_path
self.f = open(self.file_path, 'rb') def read_first(self):
# self.f.read()
# ...
pass def read_last(self):
# self.f.read()
# ...
pass def read_second(self):
# self.f...
# ...
pass obj = FileHandler('C:/xx/xx.log')
obj.read_first()
obj.read_last()
obj.read_second()
obj.f.close() b. 将数据封装到对象中,以供其他函数调用
def new_func(arg):
arg.k1
arg.k2
arg.k6 class Foo:
def __init__(self,k1,k2,k6):
self.k1 = k1
self.k2 = k2
self.k6 = k6 obj = Foo(111,22,333)
new_func(obj) 练习: 信息管理系统
1. 用户登录
2. 显示当前用户信息
3. 查看当前用户所有的账单
4. 购买姑娘形状的抱枕 示例:
class UserInfo: def __init__(self):
self.name = None def info(self):
print('当前用户名称:%s' %(self.name,)) def account(self):
print('当前用户%s的账单是:....' %(self.name,)) def shopping(self):
print('%s购买了一个人形抱枕' %(self.name,)) def login(self):
user = input('请输入用户名:')
pwd = input('请输入密码:')
if pwd == 'sb':
self.name = user
while True:
print("""
1. 查看用户信息
2. 查看用户账单
3. 购买抱枕
""")
num = int(input('请输入选择的序号:'))
if num == 1:
self.info()
elif num ==2:
self.account()
elif num == 3:
self.shopping()
else:
print('序号不存在,请重新输入')
else:
print('登录失败') obj = UserInfo()
obj.login() 总结:
class Foo:
def func2(self):
print('func2') def func1(self):
self.fun2()
print('func1') obj = Foo()
obj.func1() 2. 面向对象代码如何编写
a. 规则 class Foo: def __init__(self,name):
self.name = name def detail(self,msg):
print(self.name,msg) obj = Foo()
obj.detail() b. 什么时候写?如何写? 方式一:归类+提取公共值
归类:
class File:
def file_read(self,file_path):
pass def file_update(self,file_path):
pass def file_delete(self,file_path):
pass def file_add(self,file_path):
pass class Excel:
def excel_read(self,file_path):
pass def excel_update(self,file_path):
pass def excel_delete(self,file_path):
pass def excel_add(self,file_path):
pass 提取公共值:
class File:
def __init__(self,file_path):
self.file_path = file_path def file_read(self):
pass def file_update(self):
pass def file_delete(self):
pass def file_add(self):
pass class Excel:
def __init__(self,file_path):
self.file_path = file_path def excel_read(self):
pass def excel_update(self):
pass def excel_delete(self):
pass def excel_add(self):
pass 方式二:在指定类中编写和当前类相关的所有代码 + 提取公共值 class Message:
def email(self):
pass class Person:
def __init__(self,na, gen, age, fig)
self.name = na
self.gender = gen
self.age = age
self.fight =fig def grassland(self):
self.fight = self.fight - 10 def practice(self):
self.fight = self.fight + 90 def incest(self):
self.fight = self.fight - 666 cang = Person('苍井井', '女', 18, 1000) # 创建苍井井角色
dong = Person('东尼木木', '男', 20, 1800) # 创建东尼木木角色
bo = Person('波多多', '女', 19, 2500) # 创建波多多角色 dong.grassland() 3. 面向对象的三大特性:封装/继承/多态 封装:
将相关功能封装到一个类中:
class Message:
def email(self):pass
def msg(self):pass
def wechat(self):pass
将数据封装到一个对象中: class Person:
def __init__(self,name,age,gender):
self.name = name
self.age = age
self.gender = gender obj = Person('孙福来',18,'女')
继承:
class SuperBase:
def f3(self):
print('f3') class Base(SuperBase): # 父类,基类
def f2(self):
print('f2') class Foo(Base): # 子类,派生类 def f1(self):
print('f1') obj = Foo()
obj.f1()
obj.f2()
obj.f3()
# 原则:现在自己类中找,么有就去父类 总结:
1. 继承编写 class Foo(父类):
pass 2. 支持多继承(先找左/再找右) 3. 为什么要有多继承? 提供代码重用性 练习: 找self到底是谁的对象?从谁开始找. 多态:
多种形态或多种状态
鸭子模型,只要可以嘎嘎叫就是鸭子. Python
# 由于python原生支持多态,所以没有特殊性.
"""
class Foo1:
def f1(self):
pass class Foo2:
def f1(self):
pass class Foo3:
def f1(self):
pass def func(arg):
arg.f1() obj = Foo1() # obj= Foo2() obj = Foo3()
func(obj)
""" java
class Son(list):
pass class Son1(list):
pass # 以后传参时,arg可以是:list类的对象/list任何子类的对象
public void func(list arg){
print(arg)
} # obj = list()
# obj = Son()
obj = Son1()
func(obj) 重点:
1. 编写方式执行流程 2. 如何归类?
反向:归类+提取公共值
正向:类相关的功能+提取公共值 3. 三大特性 作业:练习题

day 22 面向对象的基础的更多相关文章

  1. [.net 面向对象编程基础] (22) 事件

    [.net 面向对象编程基础] (22)  事件 事件(Event)是学习.net面向对象编程很重要的一部分,在学习事件之前,我们实际上已经在很多地方使用了事件,比如控件的click事件等,这些都是. ...

  2. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  3. [.net 面向对象编程基础] (17) 数组与集合

    [.net 面向对象编程基础] (17) 数组与集合 学习了前面的C#三大特性,及接口,抽象类这些相对抽象的东西以后,是不是有点很累的感觉.具体的东西总是容易理解,因此我们在介绍前面抽象概念的时候,总 ...

  4. [.net 面向对象编程基础] (20) LINQ使用

    [.net 面向对象编程基础] (20)  LINQ使用 通过上节LINQ的基础知识的学习,我们可以开始使用LINQ来进行内存数据的查询了,我们上节说了LINQ的定义为:Language Integr ...

  5. [.net 面向对象编程基础] (23) 结束语

    [.net 面向对象编程基础] (23)  结束语 这个系列的文章终于写完了,用了半个多月的时间,没有令我的粉丝们失望.我的感觉就是一个字累,两个字好累,三个字非常累.小伙伴们看我每篇博客的时间就知道 ...

  6. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  7. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  8. [.net 面向对象编程基础] (2) 关于面向对象编程

    [.net 面向对象编程基础]  (2)  关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...

  9. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

随机推荐

  1. AQL基本语法

    目录: 基本的CRUD 插入 检索 更新 删除 匹配文件 排序和限制 限制 排序 组合 图操作 地理位置查询 一.数据预览 本次使用的数据共有43条,每条数据包含姓氏.年龄.活动状态和特征等六个字段 ...

  2. Elasticsearch 知识点整理 一

    极力推荐: 官网地址: https://www.elastic.co/guide/en/elasticsearch/reference/6.0 肺腑之言,学ES先学原生的语法,SpringData封装 ...

  3. 聊一聊Java中的各种运算符

    计算机之所以叫“计算机”,其最基本用途之一就是运算,对应刚刚接触Java的小伙伴而言,熟悉并掌握Java中的各种运算符及其在表达式中的运算优先级是十分必要的. 算术运算 算术运算主要用来处理数学中的加 ...

  4. Python+requests+unittest+excel实现接口自动化测试框架(转

    一.框架结构:工程目录 二.Case文件设计三.基础包 base 3.1 封装get/post请求(runmethon.py) import requests import json class Ru ...

  5. ABP WebApi的请求类型

    Api对应的请求类型分为以下四种方法: 1.POST 2.PUT 3.DELETE 4.GET 一般abp的请求类型都是根据接口命名来定义的,Create——POST,Delete——DELETE,U ...

  6. (二)golang--windows下vscode的安装以及go环境的配置

    在官网上下载vscode对应的安装包,进行安装: 安装的时候记得勾选加入到path路径: 下载go语言的SDK:https://studygolang.com/dl目前最新版本是1.13.4,我就下这 ...

  7. 使用Magicodes.SwaggerUI快速配置SwaggerUI以及设置API分组

    Magicodes.SwaggerUI 快速配置和集成SwaggerUI 特点 通过配置文件简单配置即可完成SwaggerUI的API格式JSON生成和集成 支持API分组和隐藏 支持自定义页面和验证 ...

  8. 中小学生试卷自动生成程序--jialin大佬代码分析

    结对编程代码评价 有幸和小jialin结对编程.拿到jialin的代码后. 我先是尝试用idea运行.结果报了如下错误. 无法加载主类,再尝试用eclipse运行. 好的,可以运行,那为什么用idea ...

  9. Java类、对象、变量、方法

    对象:有状态和行为.例如,一条狗是一个对象,它的状态有:颜色.名字.品种:行为有:摇尾巴.叫.吃等 类:类是一个模板,描述一类对象的行为和状态 对象的行为通过方法来体现,状态就是对象的属性,变量可以是 ...

  10. LNMP下zabbix_server安装部署一

    server:192.168.112.6 agent:192.168.112.7 安装nginx编译依赖包 gcc.pcre-devel.zlib-devel 如果需要https则加上openssl- ...