目录

前言

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的子类的语句。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐