Python入门之——getpass模块
640
2022-08-23
Python----抽象类的使用方法和使用场景(python运用场景)
1、抽象类简介
使用type方法使用__class__查看元类如:
class User(object): passif __name__=="__main__": print(type(User)) print(User.__class__)~~~执行结果如下:~~~python
抽象类的特点:
抽象类不能实例化抽象类中可以存在抽象方法,也可以存在普通的方法抽象类中可以有成员属性抽象类的使用方式是被其他类继承其他类继承了抽象类并且实现了抽象类中的所有抽象方法之后才可以被实例化
抽象类的作用
指定开发规范,定义接口协同开发程序加速开发效率
2、抽象类使用方法
定义抽象类如下,定义类的时候只需要设置metaclass=abc.ABCMeta
import abcclass User(metaclass=abc.ABCMeta): @abc.abstractmethod def user_add(self): pass @abc.abstractclassmethod def user_update(cls): pass @abc.abstractmethod def user_del(): pass @abc.abstractstaticmethod def user_find(self): pass
继承抽象类的实现方式如下,定义一个新类,继承抽象类,待将抽象类中的所有抽象方法均实现后,新类即可以实例化了,否则不可以实例化
import abcclass User(metaclass=abc.ABCMeta): id = 9999 @abc.abstractmethod def user_add(self): pass @abc.abstractclassmethod def user_update(cls): pass @abc.abstractmethod def user_del(self): pass @abc.abstractstaticmethod def user_find(): passclass MyUser(User): def __init__(self): pass def user_add(self): print("user add") def user_del(self): print("user del") def user_find(self): print("user find") @classmethod def user_update(cls): print("user update")myuser = MyUser()print(myuser.id)myuser.user_add()myuser.user_del()myuser.user_find()MyUser.user_update()
执行结果如下:
9999user adduser del
抽象类用于定义接口协同开发的应用场景比如user_add安排第一个人,user_del安排给第二个人,user_udpate安排给第三个人,user_find安排给第四个人,则此时要求第一个人的类继承User类,第二个类继承第一个人的类,第三个继承第二个人的类,第四个继承第三个人的类,这样都开发完成后吗,直接使用第四个类的即可以用来实例化以及调用所有的方法
import abcclass User(metaclass=abc.ABCMeta): id=888 @abc.abstractmethod def user_add(self): pass @abc.abstractclassmethod def user_update(cls): pass @abc.abstractmethod def user_del(self): pass @abc.abstractstaticmethod def user_find(): passclass User1(User): def user_add(self): print("user add")class User2(User1): @staticmethod def user_del(): print("user del")class User3(User2): @classmethod def user_update(cls): print("user update")class User4(User3): def user_find(self): print("user find")user = User4()print(user.id)user.user_add()User4.user_del()user.user_update()user.user_find()
执行结果如下:
888user adduser del
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~