目录
前言
1.什么是类
2.类的继承
总结
前言
我们会在python学习中遇到了如class Solution(object):这种形如class className(object):这种类定义,与平常使用的class className:有着差别,class className(object):实际上是类继承。
1.什么是类
要弄明白类继承这个概念,首先就要明白什么是类。类是描述一个对象的规则,与之相对的,对象是按照这个类生成的个体。
举个例子说,有一本规则手册写着学生会学习,会提问。而小明,小美按照这个记录着学生特征规则手册被生成,他们都会读书,提问。那么这本规则手册就是学生类,小明小美是这个学生类的对象。
#学生类 描述了什么是学生
class Student:
#__init__为该类对象被初始化时调用的
#如该类初始化学生小美为 xiaoMei=Student("XiaoMei")
#括号中字符串"XiaoMei"就是__init__函数中的输入name参数
#self指的是该类对象自身,如上面对象xiaoMei中,self指的就是小美
def __init__(self,name):
self.name=name
def Learn(self):
print(self.name+"在学习!\n")
def Question(self):
print(self.name+"在提问!\n")
#根据类的描述生成两个学生(对象)
xiaoMing=Student("XiaoMing")
xiaoMei=Student("XiaoMei")
#小明学习
xiaoMing.Learn()
#小妹提问
xiaoMei.Question()
该代码的输出如下:
XiaoMing在学习!
XiaoMei在提问!
2.类的继承
在弄明白什么是类之后,我们发现学生中有擅长运动的学生(SportStudent),他们会运动。还有会唱歌的学生 (SingStudent),他们会唱歌。但是这两种学生有都是学生,都会学习和提问。
程序员发现一个个定义他们的类实在太累了,因为要在每个类定义中重复劳动加上学习和提问,而且这样定义没法体现运动学生和唱歌学生都是学生这件事。于是,程序员发明了类继承,让这两种学生类成为学生类的子类(学生类是这两种类的父类),这样他们都可以使用学习,提问的方法。
继承父类的代码如下,也就是标题中
class 子类名(父类名):
#具体内容
具体实现代码如下
#学生类 描述了什么是学生
class Student:
#__init__为该类对象被初始化时调用的
#如该类初始化学生小美为 xiaoMei=Student("XiaoMei")
#括号中字符串"XiaoMei"就是__init__函数中的输入name参数
#self指的是该类对象自身,如上面对象xiaoMei中,self指的就是小美
def __init__(self,name):
self.name=name
def Learn(self):
print(self.name+"在学习!")
def Question(self):
print(self.name+"在提问!")
#运动学生和唱歌学生类继承了Student类并且定义各自的独特方法
#运动学生定义了DoSport()
#唱歌学生定义了Sing()
class SportStudent(Student):
def DoSports(self):
print(self.name+"在运动!")
class SingStudent(Student):
def Sing(self):
print(self.name+"在唱歌!")
#初始化运动学生小明,唱歌学生小美
#注意到两种类都继承了父类学生的__init__方法
xiaoMing=SportStudent("XiaoMing")
xiaoMei=SingStudent("XiaoMei")
#这两种子类的对象都会学生类的方法,除特殊的父类私有方法外
#如都会学习
xiaoMing.Learn()
xiaoMei.Learn()
#但是这两种类的对象有各自特长(独特方法)
xiaoMing.DoSports()
xiaoMei.Sing()
以上代码的输出为:
XiaoMing在学习!
XiaoMei在学习!
XiaoMing在运动!
XiaoMei在唱歌!
总结
以上文章总结了什么是类和对象,class className(object):是创造继承object父类的名为className的子类的语句。