面向对象【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)

  

posted @ 2018-06-05 21:02  活的潇洒80  阅读(307)  评论(0编辑  收藏  举报