1.上节回顾
1 class School:
2 x=1
3 def __init__(self,name,addr,type):
4 self.Name=name
5 self.Addr=addr
6 self.Type=type
7
8 def tell_info(self):
9 print('学校的详细信息是:name:%s addr:%s' %(self.Name,self.Addr))
10
11
12 # s1=School('oldboy','沙河','私立')
13
14 # print(s1.__dict__)
15 #
16 # print(School.__dict__)
17 #
18 # s1.tell_info()
19 # School.tell_info(s1)
2.静态属性
1 class Room:
2 tag=1
3 def __init__(self,name,owner,width,length,heigh):
4 self.name=name
5 self.owner=owner
6 self.width=width
7 self.length=length
8 self.heigh=heigh
9
10 @property
11 def cal_area(self):
12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))
13 return self.width * self.length
14 @property
15 def cal1_area(self):
16 return self.width * self.length
17
18
19 def test(self):
20 print('from test',self.name)
21
22 @claSSMethod
23 def tell_info(cls,x):
24 print(cls)
25 print('--》',cls.tag,x)#print('--》',Room.tag)
26 # def tell_info(self):
27 # print('---->',self.tag)
28 @classmethod
29 def tell_info1(cls,x):
30 print(cls)
31 print('-->>',cls.tag,x)
32
33 # print(Room.tag)
34
35 # Room.test(1) #1.name
36 # r1=Room('厕所','alex',100,100,100000)
37 # Room.tell_info(10)
38
39 r1=Room('厕所','alex',100,100,100000)
40 r2=Room('公共厕所','yuanhao',1,1,1)
41 # print('%s 住的 %s 总面积是%s' %(r1.owner,r1.name,r1.width*r1.length))
42 # print('%s 住的 %s 总面积是%s' %(r2.owner,r2.name,r2.width*r2.length))
43 # r1.cal_area()
44 # r2.cal_area()
45 print(r1.cal_area)
46 print(r2.cal_area)
47 print(r1.name)
48 print(r2.name)
3.类方法
1 class Room:
2 tag=1
3 def __init__(self,name,owner,width,length,heigh):
4 self.name=name
5 self.owner=owner
6 self.width=width
7 self.length=length
8 self.heigh=heigh
9
10 @property
11 def cal_area(self):
12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))
13 return self.width * self.length
14 @property
15 def cal_area1(self):
16 return self.width * self.length
17
18
19 def test(self):
20 print('from test',self.name)
21
22 @classmethod
23 def tell_info(cls,x):
24 print(cls)
25 print('--》',cls.tag,x)#print('--》',Room.tag)
26 # def tell_info(self):
27 # print('---->',self.tag)
28
29 @classmethod
30 def tell_info1(cls,x):
31 print(cls)
32 print('-->>',cls.tag,x)
33
34 # print(Room.tag)
35
36 # Room.test(1) #1.name
37 r1=Room('厕所','alex',100,100,100000)
38 # Room.test(r1)
39 Room.tell_info(10)
4.静态方法
1 class Room:
2 tag=1
3 def __init__(self,name,owner,width,length,heigh):
4 self.name=name
5 self.owner=owner
6 self.width=width
7 self.length=length
8 self.heigh=heigh
9
10 @property
11 def cal_area(self):
12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))
13 return self.width * self.length
14
15 @classmethod
16 def tell_info(cls,x):
17 print(cls)
18 print('--》',cls.tag,x)#print('--》',Room.tag)
19 # def tell_info(self):
20 # print('---->',self.tag)
21
22 @staticmethod
23 def wash_body(a,b,c):
24 print('%s %s %s正在洗澡' %(a,b,c))
25
26 @staticmethod
27 def wash_body1(a,b,c):
28 print('%s %s %s正在洗澡'%(a,b,c))
29
30 def test(x,y):
31 print(x,y)
32
33 # Room.wash_body('alex','yuanhao','wupeiqi')
34
35 # print(Room.__dict__)
36
37
38 r1=Room('厕所','alex',100,100,100000)
39 #
40 # print(r1.__dict__)
41 # r1.wash_body('alex','yuanhao','wupeiqi')
42
43 # Room.test(1,2)
44 r1.test(1)
5.组合
1 # class Hand:
2 # pass
3 #
4 # class Foot:
5 # pass
6 #
7 # class Trunk:
8 # pass
9 #
10 # class Head:
11 # pass
12
13
14 # class Person:
15 # def __init__(self,id_num,name):
16 # self.id_num=id_num
17 # self.name=name
18 # self.hand=Hand()
19 # self.foot=Foot()
20 # self.trunk=Trunk()
21 # self.head=Head()
22 # p1=Person('111111','alex')
23 #
24 #
25 # print(p1.__dict__)
26
27 # class School:
28 # def __init__(self,name,addr):
29 # self.name=name
30 # self.addr=addr
31 #
32 # def zhao_sheng(self):
33 # print('%s 正在招生' %self.name)
34 #
35 # class Course:
36 # def __init__(self,name,price,period,school):
37 # self.name=name
38 # self.price=price
39 # self.period=period
40 # self.school=school
41 # #
42 # #
43 # #
44 # s1=School('oldboy','北京')
45 # s2=School('oldboy','南京')
46 # s3=School('oldboy','东京')
47 #
48 # # c1=Course('linux',10,'1h','oldboy 北京')
49 # c1=Course('linux',10,'1h',s1)
50 # #
51 # print(c1.__dict__)
52 # print(c1.school.name)
53 # print(s1)
54
55
56
57
58
59
60
61
62
63
64
65
66
67 class School:
68 def __init__(self,name,addr):
69 self.name=name
70 self.addr=addr
71
72
73 def zhao_sheng(self):
74 print('%s 正在招生' %self.name)
75
76 class Course:
77 def __init__(self,name,price,period,school):
78 self.name=name
79 self.price=price
80 self.period=period
81 self.school = school
82
83
84
85 s1=School('oldboy','北京')
86 s2=School('oldboy','南京')
87 s3=School('oldboy','东京')
88 #
89 # c1=Course('linux',10,'1h','oldboy 北京')
90 c1=Course('linux',10,'1h',s1)
91
92 msg='''
93 1 老男孩 北京校区
94 2 老男孩 南京校区
95 3 老男孩 东京校区
96 '''
97 while True:
98 print(msg)
99 menu={
100 '1':s1,
101 '2':s2,
102 '3':s3
103 }
104 choice=input('选择学校>>: ')
105 school_obj=menu[choice]
106 name=input('课程名>>: ')
107 price=input('课程费用>>: ')
108 period=input('课程周期>>: ')
109 new_course=Course(name,price,period,school_obj)
110 print('课程【%s】属于【%s】学校' %(new_course.name,new_course.school.name))
6.继承
1 class Dad:
2 '这个是爸爸类'
3 money=10
4 def __init__(self,name):
5 print('爸爸')
6 self.name=name
7 def hit_son(self):
8 print('%s 正在打儿子' %self.name)
9
10 class Son(Dad):
11 money = 1000000000009
12 def __init__(self,name,age):
13 self.name=name
14 self.age=age
15
16 def hit_son(self):
17 print('来自儿子类')
18 # print(Son.money)
19 # Son.hit_son(Son('andy',12))
20 # print(Dad.__dict__)
21 # print(Son.__dict__)
22 s1=Son('alex',18)
23 # s1.hit_son()
24 print(s1.money)
25 print(Dad.money)
26 print(s1.name)
27 print(s1.money)
28 print(s1.__dict__)
29 s1.hit_son()
7.接口继承
1 import abc
2 class All_file(metaclass=abc.ABCMeta):
3 @abc.abstractmethod
4 def read(self):
5 pass
6
7 @abc.abstractclassmethod
8 def read1(self):
9 pass
10
11 @abc.abstractmethod
12 def write(self):
13 pass
14
15 @abc.abstractclassmethod
16 def write1(self):
17 pass
18
19 class Disk(All_file):
20 def read(self):
21 print('disk read')
22
23 def write(self):
24 print('disk write')
25
26 class Cdrom(All_file):
27 def read(self):
28 print('cdrom read')
29
30 def write(self):
31 print('cdrom write')
32
33
34 class Mem(All_file):
35 def read(self):
36 print('mem read')
37
38 def write(self):
39 print('mem write')
40
41 class Mem1(All_file):
42 def read(self):
43 print('mem read')
44
45 def write(self):
46 print('mem write')
47 #
48 m1=Mem1()
49 m1.read()
50 m1.write()
8.继承顺序
1 #coding:utf-8
2 class A:
3 def test(self):
4 print('A')
5 pass
6 class B(A):
7 # def test(self):
8 # print('B')
9
10 pass
11 class C(A):
12 def test(self):
13 print('C')
14 pass
15
16 class D(B):
17 # def test(self):
18 # print('D')
19 pass
20
21 class E(C):
22 # def test(self):
23 # print('E')
24 pass
25
26 class F(D,E):
27 # def test(self):
28 # print('F')
29 pass
30 f1=F()
31 f1.test() #经典类:F->D->B->A-->E-->
32
33 print(F.__mro__)
34
35 #F-->D->B-->E--->C--->A新式类
9.在子类中调用父类的方法
1 class Vehicle:
2 Country='China'
3 def __init__(self,name,speed,load,power):
4 self.name=name
5 self.speed=speed
6 self.load=load
7 self.power=power
8 def run(self):
9 print('开动啦')
10 print('开动啦')
11 class Subway(Vehicle):
12 def __init__(self,name,speed,load,power,line):
13 Vehicle.__init__(self,name,speed,load,power)
14 self.line=line
15
16 def show_info(self):
17 print(self.name,self.speed,self.load,self.power,self.line)
18
19 def run(self):
20 Vehicle.run(self)
21 print('%s %s 线,开动啦' %(self.name,self.line))
22 line13=Subway('北京地铁','10km/s',1000000000,'电',13)
23
24 line13.show_info()
25
26 line13.run()
10.super方法的使用
1 class Vehicle1:
2 Country='China'
3 def __init__(self,name,speed,load,power):
4 self.name=name
5 self.speed=speed
6 self.load=load
7 self.power=power
8 def run(self):
9 print('开动啦')
10 print('开动啦')
11 class Subway(Vehicle1):
12 def __init__(self,name,speed,load,power,line):
13 # Vehicle.__init__(self,name,speed,load,power)
14 # super().__init__(name,speed,load,power) #super(__class__,self).__init__(name,speed,load,power)
15 super(Subway,self).__init__(name,speed,load,power)
16 self.line=line
17 def show_info(self):
18 print(self.name,self.speed,self.load,self.power,self.line)
19 def run(self):
20 # Vehicle.run(self)
21 super().run()
22 print('%s %s 线,开动啦' %(self.name,self.line))
23 line13=Subway('北京地铁','10km/s',1000000000,'电',13)
24 line13.show_info()
25 line13.run()
26
27 print(line13.__class__)