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 @property11 def cal_area(self):12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))13 return self.width * self.length14 @property15 def cal1_area(self):16 return self.width * self.length17 18 19 def test(self):20 print('from test',self.name)21 22 @classmethod23 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 @classmethod29 def tell_info1(cls,x):30 print(cls)31 print('-->>',cls.tag,x)32 33 # print(Room.tag)34 35 # Room.test(1) #1.name36 # 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 @property11 def cal_area(self):12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))13 return self.width * self.length14 @property15 def cal_area1(self):16 return self.width * self.length17 18 19 def test(self):20 print('from test',self.name)21 22 @classmethod23 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 @classmethod30 def tell_info1(cls,x):31 print(cls)32 print('-->>',cls.tag,x)33 34 # print(Room.tag)35 36 # Room.test(1) #1.name37 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 @property11 def cal_area(self):12 # print('%s 住的 %s 总面积是%s' % (self.owner,self.name, self.width * self.length))13 return self.width * self.length14 15 @classmethod16 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 @staticmethod23 def wash_body(a,b,c):24 print('%s %s %s正在洗澡' %(a,b,c))25 26 @staticmethod27 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':s3103 }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 = 100000000000912 def __init__(self,name,age):13 self.name=name14 self.age=age15 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 pass10 11 @abc.abstractmethod12 def write(self):13 pass14 15 @abc.abstractclassmethod16 def write1(self):17 pass18 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 pass11 class C(A):12 def test(self):13 print('C')14 pass15 16 class D(B):17 # def test(self):18 # print('D')19 pass20 21 class E(C):22 # def test(self):23 # print('E')24 pass25 26 class F(D,E):27 # def test(self):28 # print('F')29 pass30 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=line15 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=line17 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__)