Python 类的封装、继承、抽象、多态
2021/12/6 22:46:50
本文主要是介绍Python 类的封装、继承、抽象、多态,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
类的封装:
把类的属性与方法封装起来,做自己调用(隐藏数据和方法)和别人调用(开放数据和方法)
类的继承:
单向继承:像一根绳上的蚂蚱一样,A继承B,B继承C,C继承D,即class D: class C(D): class B(C): class A(B):
多(向)继承:类A继承B、C、D等多个类的特性,即class A(B,C,D)
菱形问题:
经典类:没有继承object类及其子子孙孙类的类,python2中存在,深度优先
新式类:继承了object类及其子子孙孙类的类,python3中都是这种,广度优先
深度优先:继承了多个类的classA,在调用了一个A中没有的方法时,第一次就查找至最终的一个类
广度优先:继承了多个类的classA,在调用了一个A中没有的方法时,最后一次才查找至最终的一个类
mro列表:
类查找属性或方法时的顺序,按照产生对象的类的mro列表中所列的顺序查找,mro列表使用类名.__mro__或类名.mro()查看
如:class A(B): print(A.__mro__) 或 print(A.mro())
如果继承了多个类,而这几个父类中又都有相同的方法,则从mro列表中左边的开始查找。
super():
从父类中调用方法,在父类中查找方法的顺序,按照mro列表中的顺序。
单继承类中,依次向上查找,
多继承类中,按照mro列表中父类的顺序进行查找
抽象类:
只能被继承,不能被实例化的类,多用于定义某种方法和属性,为多态提供基础
import abc
class Animal(metaclass=abc.ABCMeta): # 定义一个抽象类
@abc.abstractmethod # 定义一个抽象方法
def speak(self): pass
@abc.abstractmethod
def login(self):pass
多态:
接上例:
class People(Animal):
def speak(self):
# print('嗷嗷嗷')
pass
def login(self):
pass
class Pig(Animal):
def speak(self):
print('哼哼哼')
obj = People()
obj1 = Pig()
def animal(animal): # 定义一个函数,注意这是一个函数,不是一个类,函数的参数,是一个对象
return animal.speak() # 调用并返回对象的方法
这篇关于Python 类的封装、继承、抽象、多态的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-02Python编程基础
- 2024-11-01Python 基础教程
- 2024-11-01用Python探索可解与不可解方程的问题
- 2024-11-01Python编程入门指南
- 2024-11-01Python编程基础知识
- 2024-11-01Python编程基础
- 2024-10-31Python基础入门:理解变量与数据类型
- 2024-10-30Python股票自动化交易资料详解与实战指南
- 2024-10-30Python入行:新手必读的Python编程入门指南
- 2024-10-30Python入行:初学者必备的编程指南