2021黑马python6.5就业班黑马python视频教程下载百度云
下载地址 https://share.weiyun.com/dHvWwF1o
资料目录 黑马程序员python入门教程19天(美女讲师版) 包含:视频课程-python从0开始学编程(day1-day19) 课件+代码资料-python从0开始学编程(day1-day19) 黑马python基础班代码和课件资料 黑马python就业班代码和课件资料 黑马python基础班视频课程 包含:1-1 Linux基础(119个视频) 1-2 python基础(234个视频) 1-3 面向对象(91个视频) 1-4 项目飞机大战(42个视频) 黑马python就业班视频课程 包含:01 网络编程 02 多任务 03 web服务器v3.1 04 Python高级语法v3.1 05 MySQL数据库v3.1 06 mini-web框架v3.1 07 HTML和CSS 08 首页布局案例和移动布局 09 JavaScriptv 10 jQuery和js库 11 Django框架 12 git版本管理 13 redis数据库 14 天天生鲜Django项目 15 flask框架 16 微信公众号 17 爱家租房项目 18 通用爬虫模块使用 19 MongoDB数据库 20 爬虫scrapy框架及案例 21 数据分析 22 机器学习 23 深度学习 24 数据结构和算法 25 Python网络爬虫 26 机器学习入门篇 27 机器学习入门篇2 28 机器学习提升篇 29 数据挖掘篇 30 深度学习必备原理与实战 31 深度学习必备原理与实战2 32 深度学习必备原理与实战3 33 深度学习必备原理与实战4 34 深度学习项目实战 35 深度学习项目实战2 36 深度学习项目实战3 举例 super函数 初始化函数的继承跟一般方法的继承还有点不同,可以看下面的例子: #!/usr/bin/env python # coding=utf-8 __metaclass__ = type class Person: def __init__(self): self.height = 160 def about(self, name): print "{} is about {}".format(name, self.height) class Girl(Person): def __init__(self): self.breast = 90 def about(self, name): print "{} is a hot girl, she is about {}, and her breast is {}".format(name, self if __name__ == "__main__": cang = Girl() cang.about("canglaoshi") 在上面这段程序中,类girl继承了类Person。在类girl中,初始化设置了self.breast=90,由于继承了Person,按照前面的经验,Person的初始化函数中的self.height=160也应该被Girl所继承过来。然后在重写的about方法中调用self.height。 实例化类girl,并执行cang.about("canglaoshi"),试图打印出一句话canglaoshi is a hot girl,she is about 160,and her bereast is 90。 保存程序,运行之,看看结果是否如所愿。 $ python 20903.py Traceback (most recent call last): File "20903.py", line 22, in <module> cang.about("canglaoshi") File "20903.py", line 18, in about print "{} is a hot girl, she is about {}, and her breast is {}".format(name, self.hei AttributeError: 'Girl' object has no attribute 'height' 报错! 程序员有一句名言:不求最好,但求报错。 报错不是坏事,而是我们长经验的时候,是在告诉我们,那么做不对。 重要的是看报错信息,就是我们要打印的那句话出问题了,报错信息显示self.height是不存在的,也就是说类girl没有从Person中继承过来这个属性。 原因是什么?仔细观察类girl会发现,除了刚才强调的about方法重写了,__init__方法也被重写了。不要觉得它的名字模样奇怪,就不把它看作类中的方法(函数),它跟类Person中的__init__重名了,同样是重写了那个初始化函数,而girl中的__init__中根本就没有关于self.height的任何信息。 这就提出了一个问题:因为在子类中重写了某个方法之后,父类中同样的方法被遮盖了,那么如何再把父类的该方法调出来使用呢?纵然被遮盖了,应该还是存在的,不要浪费了呀。 Python中有这样一种被提倡的方法:super函数。 #!/usr/bin/env python # coding=utf-8 __metaclass__ = type class Person: def __init__(self): self.height = 160 def about(self, name): print "{} is about {}".format(name, self.height) class Girl(Person): def __init__(self): super(Girl, self).__init__() self.breast = 90 def about(self, name): print "{} is a hot girl, she is about {}, and her breast is {}".format(name, self super(Girl, self).about(name) if __name__ == "__main__": cang = Girl() cang.about("canglaoshi") 在子类中,__init__方法重写了,为了调用父类同方法,使用super(Girl,self).__init__()的方式。super函数的参数,第一个是当前子类的类名字,第二个是self,然后是点号,点号后面是所要调用的父类的方法。同样在子类重写的about方法中,也可以调用父类的about方法。 执行结果: $ python 20903.py canglaoshi is a hot girl, she is about 160, and her breast is 90 canglaoshi is about 160 最后要注意:super函数仅仅适用于新式类。当然,你使用的一定是新式类,因为“喜新厌旧”是程序员的嗜好。 如果你用的是Python3.x,则使用super函数的形式稍微不同。怎么个不同呢?请你认真阅读下面的“拓展阅读”中的资料(不要责备我不说,我是在告诉你一种非常好的学习方法——看别人提出的问题和解答,因为那些问题也是你的问题)。
|