Python 初识面向对象编程

Python 初识面向对象编程

(1) 函数式编程和面向对象的对比
  1. python 支持函数式编程和面向对象编程
  2. 函数式编程优点:代码量少,定义简单,调用简单
  3. 函数式编程缺点:参数过多,多次传参时较麻烦
  4. 面向对象优点:可以对功能类似的方法进行归类,通过构造方法可以避免多次传参,也可以进行数据打包,方便调用
  5. 面向对象缺点:定义复杂,调用复杂(需要先实例化才能调用)
(2) 面向对象的代码如何写
class ClassName:#使用class关键词加类名创建一个类,这里类名一般使用驼峰体
	def __init__(self):#类中的构造方法,写法固定,实例化时自动执行,初始化
	#写在类中的方法必须写self参数才能被调用,self参数为python内部自动传参,就是对象
	#如这里实例化对象为demo,此时的self参数传入的即为demo
		pass
	def fun1(self):
		pass
	........
demo=ClassName()#实例化一个类,创建一个对象
demo.fun1()#通过实例化出来的类来调用fun1方法
(3) 面向对象三大特征:封装,继承,多态
  1. 封装
class ClassName:
	def __init__(self,name,age,gender):#通过构造方法将数据进行封装,以后使用时直接获取即可
		self.name=name
		self.age=age
		self.gender=dender
	def show(self):
		print('%s,%s,今年%s'%(self.name,self.gender=dender,self.age=age))
		#在这里直接使用封装的属性
demo=ClassName('小明','男',12)
demo.show()#这里输出:小明,男,今年12
#也可以在外部调用输出
print('%s,%s,今年%s'%(demo.name,demo.gender=dender,demo.age=age))
#这里输出同demo.show(),意为将数据封装到实例化的对象中,随时进行使用
  1. 继承
# 继承,即继承父类的方法,在子类实例化对象中也可使用父类方法
# 继承是相对的,即a继承b,b继承c,此时b是c的子类,也是a的父类
# 在相对继承中,实例化的对象在使用方法时会一层一层查找,先查父类,然后查父类的父类,以此类推
# 多继承(Python特有),格式类名(父类1,父类2,....),调用一个方法时,如果子类没有,会从左往右查找其父类
class GrandFather:#定义一个名为GrandFather父类,也称为基类
	def fun1(self):#定义fun1方法
		print('GrandFather')
class Father(GrandFather):#定义一个GrandFather的子类,也称为派生类,通过类名(父类名)来继承
	def fun2(self):#定义fun2方法
		print('father')
class Son(Father):
	def fun3(self):#定义fun3方法
		print('Son')
son=Son()#实例化子类
son.fun3()#子类中有fun3方法,正常调用,输出松Son
son.fun2()#此时子类中没有fun2方法,此时就会找Son的父类中的方法,输出father
son.fun1()#此时子类中没有fun2方法,就去找Father中方法,结果还没有,就去找父类的GrandFather,输出GrandFather
  1. 多态
# Python 原生就支持多态,即多支持种状态或者形态.如下
def main(arg):
	arg[0]
main(list)
main(str)
main(tuple)
#此时arg就是多种形态,支持list,str,tuple多种类型

你可能感兴趣的:(Python知识点大纲)