抽象类

什么是抽象方法?

不完整的方法,没有方法体的方法就是抽象方法。

什么是抽象类?

不完整的一种类,具有抽象方法的类就是抽象类。

什么是元类?

元类就是用来制作类的类,正常情况下所有类的元类默认都是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('封禁用户的方法')

#声明一个类继承User类来使用
class MyUser(User):
#实现所有抽象类中的方法
# 添加用户的方法 对象方法
def user_add(self):
print('这是一个添加用户的方法')
# 修改用户的方法 类方法
@classmethod
def user_update(cls):
print('这是一个设置用户的方法')
# 删除用户的方法 绑定类的方法
def user_del():
print('这是一个删除用户的方法')
# 查找用户的方法 静态方法
@staticmethod
def user_find():
print('这是一个查找用户的方法')
#实例化MyUser类
mu = MyUser()
print(mu)

#调用方法
#调用user_lock方法
mu.user_lock()
#调用user_add方法
mu.user_add()
#调用user_update方法
MyUser.user_update()
#调用user_del的方法
MyUser.user_del()
#调用user_find方法
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
#文件操作的步骤
#1.打开文件 2.读写文件 3.关闭文件
try:
# 文件操作的步骤
# 1.打开文件
fp = open('with1.txt','x',encoding='utf-8')
#2.读写文件
#fp.write('123')
fp.read()

except:
print('程序出现了异常!')
else:#没有错误的时候执行的区域
pass
finally:#无论是否有错误都会执行!
# 3.关闭文件
fp.close()
print('文件关闭了!')

#with语法的应用
with open('with1.txt','r',encoding='utf-8') as fp:
#文件读写操作
data = fp.read()
print(data)