面向对象3
2018-06-17 23:35:14来源:未知 阅读 ()
使用静态方法实现类的多态
1 class Animal(object): 2 def __init__(self, noice, name): 3 self.noice = noice 4 self.name = name 5 6 @staticmethod #使用静态方法装饰以后,可以直接使用类进行调用。不必实例化。 7 def talk(self): 8 print('this is %s talk %s'%(self.name, self.noice)) 9 10 class Dog(Animal): 11 pass 12 13 class Cat(Animal): 14 pass 15 16 d1 = Dog('汪汪汪', '哈士奇') 17 c1 = Cat('喵喵喵', '短尾') 18 Animal.talk(d1) #使用类调用统一的接口,对传入的对象按照对象特有属性进行处理,进而实现多态 19 Animal.talk(c1)
类的封装--升级版
1 class F1(object): 2 def __init__(self, name): 3 self.name = name 4 def display(self): 5 print('F1', self.name) 6 7 class F2(object): 8 def __init__(self, args): 9 self.args = args 10 11 class F3(object): 12 def __init__(self, args): 13 self.args = args 14 c1 = F1('test') 15 c2 = F2(c1) 16 c3 = F3(c2) 17 print( c3.args.args.name )
#类中也可以封装类。 17行打印结果为14行输入参数test。 整个逻辑为:1、c3 = F3(c2) ==> c3.args = c2; 2、c2 = F2(c1) ==> c2.args = c1。再加上1的推论有c3.args.args = c1,重复1,2推论有
c3.args.args.name = test
继承升级版
1 class F1(object): 2 def a1(self): 3 print('F1a1') 4 def a2(self): 5 print('F1a2') 6 class F2(F1): 7 def a1(self): 8 self.a2() 9 print('F2a1') 10 def a2(self): 11 print('F2a2') 12 class F3(F2): 13 def a2(self): 14 print('F3a2') 15 c = F3() 16 c.a1() 17 #执行过程: 18 #1、c.a1先去执行F2.a1 19 #2、执行第9行代码,该self.a2此时的self由于c是由F3实例化而来,所以此时self为c即self.a2需要先在类F3本地找a2方法。打印F3a2 20 #3、继续执行第10行代码,打印F2a1
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Django项目中使用qq第三方登录。 2019-08-13
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python学习日记(十) 生成器和迭代器 2019-08-13
- 【Python】语法基础 | 开始使用Python 2019-08-13
- 使用scrapy框架爬取全书网书籍信息。 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash