抽象类
什么是抽象方法?
不完整的方法,没有方法体的方法就是抽象方法。
什么是抽象类?
不完整的一种类,具有抽象方法的类就是抽象类。
什么是元类?
元类就是用来制作类的类,正常情况下所有类的元类默认都是type。
如何查看一个类的元类
类.__class__
type(类)
查询数据类型
type(对象)
对象.__class__
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
|
import abc class User(metaclass = abc.ABCMeta): id = 999
@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 MyUser(User): def user_add(self): print('这是一个添加用户的方法') @classmethod def user_update(cls): print('这是一个设置用户的方法') def user_del(): print('这是一个删除用户的方法') @staticmethod def user_find(): print('这是一个查找用户的方法')
mu = MyUser() print(mu)
mu.user_lock()
mu.user_add()
MyUser.user_update()
MyUser.user_del()
mu.user_find()
|
抽象类的特征:
抽象类不能实例化使用。
抽象类中可以存在抽象方法,也可以存在正常的方法。
抽象类中是否可以添加成员属性。
抽象类的使用方式就是被其他类继承。
其他类继承了抽象类并且实现了抽象类的所有抽象方法之后就可以实例化该类!
抽象类的实际作用:
指定开发程序规范。
协同程序开发,加速开发效率。
多态
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| import abc class Animal(metaclass = abc.ABCMeta): @abc.abstractmethod def say(self): pass @abc.abstractmethod def run(self): pass
class Dog(Animal): def say(self): print('小狗汪汪叫') def run(self): print('小狗四条腿跑~')
class Cat(Animal): def say(self): print('小猫喵喵叫~') def run(self): print('小猫撒腿就跑~')
class Chick(Animal): def say(self): print('小鸡咯咯叫') def run(self): print('小鸡两条腿跑')
xiaohei = Dog() xiaohua = Cat() xiaofei = Chick()
class Action: def __init__(self,animal): self.animal = animal def jiao(self): self.animal.say() def pao(self): self.animal.run()
action = Action(xiaohei)
action.jiao() action.pao()
action.animal = xiaohua
action.jiao() action.pao()
action.animal = xiaofei
action.jiao() action.pao()
|
with语法
实时监控文件使用状态,在文件不使用的情况下自动进行文件关闭!
1 2
| with open('路径','模式',字符集) as 变量: 文件读写操作
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
try: fp = open('with1.txt','x',encoding='utf-8') fp.read()
except: print('程序出现了异常!') else: pass finally: fp.close() print('文件关闭了!')
with open('with1.txt','r',encoding='utf-8') as fp: data = fp.read() print(data)
|