本节内容

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】:问答式面相对象(四)的更多相关文章

  1. 初识python:tkinter 实现 弹球小游戏(非面相对象)

    通过 tkinter 采用非面相对象式实现弹球小游戏(使用蹩脚式面相对象实现). #!/user/bin env python # author:Simple-Sir # time:2020/8/3 ...

  2. 面向对象编程(什么是对象)——java

    一.什么是面向对象,什么是面向过 二.引入对象和类的概念 对象:是具体事物 如:小明 汽车 类: 是对对象的抽象(抽象 抽出象的部分) Person 先有具体的对象,然后抽象各个对象之间的部分,归纳出 ...

  3. [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化

    [.net 面向对象程序设计进阶] (12) 序列化(Serialization)(四) 快速掌握JSON的序列化和反序列化 本节导读: 介绍JSON的结构,在JS中的使用.重点说明JSON如何在.N ...

  4. 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象

    本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...

  5. c# 面相对象1-概括

    面向对象和面向过程的区别 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了.  面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为 ...

  6. java面向对象编程(类、对象)

    一.面向对象编程概述面向对象编程(Object  Oriented  Programming,缩写为OOP)是当今最流行的程序设计技术,它具有代码易于维护.可扩展性好和代码可常用等优点.面向对象的设计 ...

  7. Python面向对象中的类和对象

    类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核心概念 1.1 类 类 是对一群具有 相同 特征 或者 行为 的事物的一个统 ...

  8. Java开发知识之Java面相对象

    Java开发知识之Java面相对象上 一丶什么是面相对象 了解什么什么是面相对象.那么首先要了解什么是面相过程. 面相过程的意思就是. 什么事情都亲力亲为. 比如上一讲的排序算法. 我们自己写的. 这 ...

  9. 201871010101-陈来弟《面相对象程序设计(java)》第十周学习总结

    201871010101-陈来弟<面相对象程序设计(java)>第十周学习总结 实验八异常.断言与日志 实验时间 2019-11-1 1.实验目的与要求 (1) 掌握java异常处理技术: ...

随机推荐

  1. 美团外卖app可行性分析

    美团外卖app可行性分析 1 引言 1.1编写目的 年轻人追求时尚,快捷,因此外卖行业拥有广阔的消费群体:团购的兴起,也促进了人们的消费欲望,人们继续一个外卖平台,来满足他们的欲望.O2o模式的日渐完 ...

  2. mybatis逆向工程生成example的问题

    如果不想生成example,在 targetRuntime="MyBatis3" 处修改为  targetRuntime="MyBatis3Simple"  & ...

  3. 安装虚拟环境和Flask

    一.Flask 使用前准备 一. 安装及创建虚拟环境 1. 安装虚拟环境 win + R -> cmd -> pip install virtualenv -> 出现 Success ...

  4. [转帖]数据中心网络里的Underlay和Overlay

    数据中心网络里的Underlay和Overlay https://blog.csdn.net/zjc801blog/article/details/54289683 2017年01月09日 15:47 ...

  5. HTMl Dom操作

    訪問: getElementById():帶回指定id的所有元素 getElementByTagName():帶回指定標籤名的所有的元素 getElementByClassName():帶回指定類型名 ...

  6. Ubuntu 16.04安装Eclipse

    此篇为http://www.cnblogs.com/EasonJim/p/7139275.html的分支页. 前提:必须正确安装JDK和Tomcat. 下载: https://www.eclipse. ...

  7. BZOJ1782[USACO 2010 Feb Gold 3.Slowing down]——dfs+treap

    题目描述 每天Farmer John的N头奶牛(1 <= N <= 100000,编号1…N)从粮仓走向他的自己的牧场.牧场构成了一棵树,粮仓在1号牧场.恰好有N-1条道路直接连接着牧场, ...

  8. BZOJ3530[Sdoi2014]数数——AC自动机+数位DP

    题目描述 我们称一个正整数N是幸运数,当且仅当它的十进制表示中不包含数字串集合S中任意一个元素作为其子串.例如当S=(22,333,0233)时,233是幸运数,2333.20233.3223不是幸运 ...

  9. BZOJ2173 整数的lqp拆分(生成函数)

    首先有序整数拆分有个显然的递推式是g(n)=Σg(i) (i=0~n-1),即枚举加入最后一个数之前和是多少.(虽然不用递推式也能显然地知道答案是2n-1). 类似地,lqp拆分有递推式f(n)=Σf ...

  10. PythonProject(1)vim的Hustoj插件

    打算写一个vim的插件,或者emacs的插件.可以在编辑器里打比赛,看rank,交代码.总之相当于一个桌面版的hustoj 这是上学期就有的一个脑洞产物,昨天学了Python的爬虫,发现这个东西很有实 ...