博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
day25-python之继承组合
阅读量:5094 次
发布时间:2019-06-13

本文共 9770 字,大约阅读时间需要 32 分钟。

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__)

 

转载于:https://www.cnblogs.com/sqy-yyr/p/10926347.html

你可能感兴趣的文章
证件照(1寸2寸)拍摄处理知识汇总
查看>>
Git入门简介
查看>>
eclipse里maven install时,报错提示jdk为无效的目标版本:1.7
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
asp.net 获取IP地理位置的几个主要接口
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
开启Spark history server
查看>>
【转】Linux内核调试方法总结
查看>>
一道不知道哪里来的容斥题
查看>>
Win7 + VS2015 + CMake3.6.1-GUI + Makefile 编译开源库
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
ORACLE 递归查询
查看>>
20172315 2017-2018-2 《程序设计与数据结构》实验三报告
查看>>
别把SEO当苦力活,做优化要讲究策略
查看>>