面向对象【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)
面向对象【day08】:问答式面相对象(四)的更多相关文章
- 初识python:tkinter 实现 弹球小游戏(非面相对象)
通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...
- 面向对象编程(什么是对象)——java
一.什么是面向对象,什么是面向过 二.引入对象和类的概念 对象:是具体事物 如:小明 汽车 类: 是对对象的抽象(抽象 抽出象的部分) Person 先有具体的对象,然后抽象各个对象之间的部分,归纳出 ...
- [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化
[.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.N ...
- 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...
- c# 面相对象1-概括
面向对象和面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了. 面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为 ...
- java面向对象编程(类、对象)
一.面向对象编程概述面向对象编程(Object Oriented Programming,缩写为OOP)是当今最流行的程序设计技术,它具有代码易于维护.可扩展性好和代码可常用等优点.面向对象的设计 ...
- Python面向对象中的类和对象
类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核心概念 1.1 类 类 是对一群具有 相同 特征 或者 行为 的事物的一个统 ...
- Java开发知识之Java面相对象
Java开发知识之Java面相对象上 一丶什么是面相对象 了解什么什么是面相对象.那么首先要了解什么是面相过程. 面相过程的意思就是. 什么事情都亲力亲为. 比如上一讲的排序算法. 我们自己写的. 这 ...
- 201871010101-陈来弟《面相对象程序设计(java)》第十周学习总结
201871010101-陈来弟<面相对象程序设计(java)>第十周学习总结 实验八异常.断言与日志 实验时间 2019-11-1 1.实验目的与要求 (1) 掌握java异常处理技术: ...
随机推荐
- 每天学习SQL
SELECT table_name FROM information_schema.tables WHERE table_schema='survey170227_main' AND table_na ...
- jQuery(五)
wrap <script> //wrap:包装 //wrapAll:整体包装 //wrapInner:内部包装 //unwrap:删除包装(删除父级,不包括body) $(function ...
- PAT 1041 考试座位号
https://pintia.cn/problem-sets/994805260223102976/problems/994805281567916032 每个PAT考生在参加考试时都会被分配两个座位 ...
- CentOS7 截图
https://blog.csdn.net/downing114/article/details/51433862 https://blog.csdn.net/lotluck/article/deta ...
- vue中eventbus被多次触发(vue中使用eventbus踩过的坑)【bus.$on事件被多次绑定】
问题描述:只要页面没有强制刷新,存在组件切换,bus.$on方法会被多次绑定,造成事件多次触发 触发bus.$on中绑定的方法.png bus.$on多次绑定.png 解决办法:在每次调用方法 ...
- SQLSERVER 2014 内存优化表相关
更新了SP2的补丁能够解决 不能收缩日志文件的bug了. 但是因为已经不用内存优化表了, 所以想着能够删除内存优化表的file group 但是发现 很难删除 先说结论: 以下是针对内存优化文件组的 ...
- SQLserver 使用网络驱动器恢复数据库
1. 公司内有多台虚拟机,因为公司提供出来的机器 硬盘总是不够大...所以想到了使用 映射网络驱动器的方式进行备份恢复工作. 学到的方法主要如下: 0. 首先打开sqlcmd 启动命令行界面 1. ...
- Java和Android的Lru缓存,及其实现原理
一.概述 Android提供了LRUCache类,可以方便的使用它来实现LRU算法的缓存.Java提供了LinkedHashMap,可以用该类很方便的实现LRU算法,Java的LRULinkedHas ...
- as_matrix、保存训练模型
#-*- coding: utf-8 -*- #构建并测试CART决策树模型 import pandas as pd #导入数据分析库 from random import shuffle #导入随机 ...
- js timeout
setTimeOut(“”,毫秒):調用函數時,不是立刻執行,而是間隔一定的時間后在執行: clearTimeOut():清除計時器