Python面向对象编程(封装、继承、多态)

Python面向对象编程(封装、继承、多态)

面向对象的三大特性:

  • 封装:根据职责将属性和方法封装到一个抽象类中。
  • 继承:实现代码的重用,相同的代码不需要重复的编写。
  • 多态:不同的对象调用相同的方法,产生不同的执行结果。增加代码的灵活度。

面向对象编程的步骤

  1. 将属性和方法封装到一个抽象的类中。
  2. 外界使用类创建对象,然后对象调用方法。
  3. 对象方法的细节都被封装在类的内部。

一、封装

封装:隐藏对象的属性和实现细节,仅对外提供公共的访问方法。

定义类:

① 与定义函数类似,第一个参数必须是self。

② 对象属性的封装应该封装在类的内部。

  1. 在类的外部给对象增加属性
Class Cat():
	def eat(self):
		print("%s 爱吃鱼" %self.name)

tom = Cat()
tom.name = "Tom"
tom.eat()

隐患:如果运行时没有找到属性,程序就会报错。

2. init 方法
初始化方法,专门用来定义一个类具有哪些属性的方法。

Class Cat():
	def __init__(self, name):
		self.name = name
	def eat(self):
		print("%s 爱吃鱼" %self.name)

tom = cat('Tom')
tom.eat()

3.__del方法

当一个对象被从内存中销毁之前,会自动调用__del__方法,一旦调用__del__方法,生命周期结束。


4.__str__方法

必须返回一个字符串,在print输出对象变量时,能够打印自定义内容。


二、继承

  • 设计类的技巧
  • 子类针对自己特有的需求,编写特定的代码

单继承

  1. 定义: 子类拥有弗雷的所有方法和属性。
Class 类名(父类名):
	pass

  1. 继承的传递性:
    C类从B类继承,B类又从A类继承,那么C类就具有B类和A类的所有属性和方法。

  1. 方法的重写
    当父类的方法实现不能满足子类需求时,可以对方法进行重写。

    ①覆盖父类的方法 => 运行时只会调用子类中重写的方法,而不会调用父类封装的方法。
    ②对父类方法进行拓展 super(). + 父类方法

    super()
    用来在重写父类方法时调用父类中封装的方法实现


2. 多继承

  1. 定义: 子类可以拥有多个父类,并且具有所有父类的属性和方法。
Class 子类名(父类1, 父类2……)pass
  1. 如果父类之间存在同名的属性或方法,尽量避免使用多继承。

三、多态

多态:不同的子类对象的调用相同的父类方法,产生不同的执行结果。

  • 多态可以增加代码的灵活度
  • 以继承和重写父类方法为前提
  • 是调用方法的技巧,不会影响到类的内部设计

猜你喜欢

转载自blog.csdn.net/qq_43299522/article/details/115050309