Python学习笔记:面向对象编程(2)
创建类时,如果其中的部分属性和方法与其他已有类相同,则可使用继承。一个类继承另一个类时,将自动继承另一个类的所有属性和方法(除私有属性和方法)。原有的类称为父类,新类称为子类,子类继承父类的所有属性和方法,也可以有自己的属性和方法,也可修改原来类中的方法。
1:继承:
1.1:使用super方法:
新建一个名为student的类,它继承person类。
#1:使用super方法
class student(person): #代码中的person即父类
'''表示学生的基本信息,继承person类'''
def __init__(self,name,age,university):
super(student,self).__init__(name,age)
self.university=university
def display(self):
print("student(姓名:{},年龄:{},所在大学:{})".format(self.name,self.age,self.university))
注:这里继承了父类person(详见前文面向对象编程(1))
定义子类student时,必须在括号里指明父类。子类继承父类的所有属性和方法,当然也包括父类的构造方法__init__()。为继承父类中的构造方法,这里使用了特殊函数super(),该函数将父类和子类关联起来。子类的构造方法中需包括父类的对应参数name、age,还需新增一个形参university。
实例化子类,并调用display方法:
#实例化子类
s1=student("刘易行",18,"长安大学")
print(s1.university) #长安大学
#调用方法
s1.display() #student(姓名:刘易行,年龄:18,所在大学:长安大学)
1.2:重写父类方法:
子类继承父类的所有方法,但是根据实际需要,子类也可以修改父类方法,只要方法名不变,可修改形参及方法内容等。如student子类中重写父类中的display()方法。
def display(self):
print("student(姓名:{},年龄:{},所在大学:{})".format(self.name,self.age,self.university))
从上可以看出,子类可继承父类中自己需要的部分,并增加或修改代表子类特征的一些属性。
2:把类放在模块中:
为了永久保存函数,需要把函数存放在模块中。同样,要保存类,也需要把定义类的脚本保存到模块中,在使用时根据需要导入相关内容。
2.1:导入类
把定义person及student类的代码,保存在当前目录的文件名为class_1的py文件中。通过import语句导入需要的类、方法或属性。
#导入模块中的student类
from class_1 import student as st
#实例化类
s2=st("小洪",19,"重庆邮电大学")
print(s2)
#调用s2中的实例方法
s2.display() #student(姓名:小洪,年龄:19,所在大学:重庆邮电大学)
2.2:在一个模块中导入另一个模块
创建名为train_class.py的主程序,存放于当前目录下,在主程序中导入class_1模块中的student类,具体代码如下:
#导入模块class_1中的student类
from class_1 import student as st
def main():
str1 = input("请输入姓名")
str2 = input("请输入年龄")
str3=input("请输入大学名称")
#实例化st类
s1=st(str1,str2,str3)
s1.display()
#判断是否以主程序运行
if __name__=='__main__':
main()
运行界面:
C:\Users\Lenovo\anaconda3\envs\tensorflow-gpu\python.exe "D:/tensorflow test/train_class.py"
请输入姓名刘易行
请输入年龄18
请输入大学名称长安大学
student(姓名:刘易行,年龄:18,所在大学:长安大学)
3:标准库
Python中有很多标准库,这些库都是一些模块,要使用这些库,只要使用import或from格式把需要的库导入即可。这些库中有很多类或函数等,导入后就可以使用这些函数或类,下面列举一些Python中常用的标准库。
模块 | 描述 |
---|---|
datetime | 用于获取系统时间 |
math | 提供标准算数的运算函数 |
random | 生成随机变量 |
os | 与操作系统进行交互 |
sys | 用于提供对解释器相关的访问及维护 |
re | 用于字符串正则匹配 |
collections | 提供许多有用的集合类 |
numpy | 提供高维数组及矩阵运算 |
Matplotlib | 画图模块 |
上表中的模块都是Python安装包Anaconda中已有的模块,要使用这些模块,只要使用
import module_name
或者
from module_name import functions
导入当前环境或对应模块即可。
Yeah, you could be the greatest
你会成为最伟大的人
You can be the best
你能做到最好
You can be the King Kong banging on your chest
你能像金刚一样自信满满的敲打胸脯
You could beat the world
你可以征服全世界
You could beat the war
能够赢得一切战争
You could talk to God, go banging on his door
甚至能够与神对话 去敲打他的门
You can throw your hands up
你能自信的举起双手
You can beat the clock
你可以与时间抗争
You can move a mountain
你有移山之力
You can break rocks
你能击碎岩石
You can be a master
你可以成为命运主宰
Don’t wait for luck
无需等待运气垂青
Dedicate yourself and you can find yourself
放手一搏后你会恍然发现
Standing in the hall of fame
你已身处名人堂之中
And the world’s gonna know your name
你的英名将会被世界所知晓
Cause you burn with the brightest flame
因为你是最耀眼的一道火焰
And the world’s gonna know your name
你的英名将被世界所铭记
And you’ll be on the walls of the hall of fame
镌刻在名人堂的墙壁之上
Hall of fame --The Script&will.i.am