什么是抽象类?
不完整的一种类。
具有抽象方法的类就是抽象类。(只要有一个抽象方法也可)
什么是抽象方法?
不完整的方法
没有方法体的方法就是抽象方法。
什么是元类?
元类就是用来制作类的类。
正常情况下所有类的元类默认都是type
如何查看一个类的元类
类.__class__
type(类)
查询数据类型
type(对象)
对象.__class__
注意:正常情况下type是系统默认的元类
使用抽象类:
import abc
#把类变成抽象类
class 类名(metaclass=abc.ABCMeta)
#把对象方法变成抽象对象方法
@abc.abstractmethod
方法体必须要pass
#把类方法变成抽象类方法
@abc.abstractclassmethod
#把绑定类的方法变成抽象的绑定类的方法
@abc.abstractmethod
#把静态方法变成抽象的静态方法
@abc.abstractstaticmethod
抽象类的特征:
1.抽象类不能实例化使用
2.抽象类中可以存在抽象方法,也可以存在正常的方法
3.抽象类中可以添加成员属性
4.抽象类的使用方式就是被其他类继承。
5.其他类继承了抽象类并且实现了抽象类的所有抽象方法之后就可以实例化该类
抽象类的实际作用:
1.制定开发程序规范
2.协同程序开发,加速开发效率
例:
#导入抽象类的功能模块
import abc
class 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():
pass
#抽象类中可以有正常的方法 【自己】
def user_lock(self):
print('封禁用户的方法')
#小赵的工作 [可以在一个单独的文件中开发]
class XZUser(User):
# 添加用户的方法 对象方法 【小赵】
def user_add(self):
print('添加用户的方法-小赵完成的')
#小钱的工作[可以在一个单独的文件中开发]
class XQUser(XZUser):
# 修改用户的方法 类方法 【小钱】
@classmethod
def user_update(cls):
print('设置用户的方法-小钱完成的')
#小孙的工作[可以在一个单独的文件中开发]
class XSUser(XQUser):
# 删除用户的方法 绑定类的方法【小孙】
def user_del():
print('删除用户的方法-小孙完成的')
#小李的工作[可以在一个单独的文件中开发]
class XLUser(XSUser):
# 查找用户的方法 静态方法 -> 抽象的静态方法 【小李】
@staticmethod
def user_find():
print('查找用户的方法-小李完成的')
#这里可以使用小李的类
u = XLUser()
#调用方法
u.user_lock()
u.user_add()
XLUser.user_update()
XLUser.user_del()
u.user_find()