(十一)python3 只需3小时带你轻松入门——面向对象

时间:2022-07-28
本文章向大家介绍(十一)python3 只需3小时带你轻松入门——面向对象,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

例如: 人是一种类型,拥有年龄、身高、体重、性别等属性。具体一个人是一个对象,例如小明;小明有年龄、身高、体重、性别等属性。小红也是人,所以具有相同属性。

类变量 类变量在整个实例化的对象中是公用的。或者可以理解为属性。 创建一个人的类,类里面有类变量,使用类变量记录人的年龄、性别、身高等属性。

类的定义:

class HumanClass:
    age=1
    sex='未知'
    stature=60
    weight=3

以上类我定义了一个年龄为1,年龄为未知,身高为60,体重为3的类。 类的定义使用class开头,后面接类名,然后冒号结束;类里面的属性定义需要使用缩进,表示代码块。

类方法 类中定义的函数。 例如狗有个方法就是发声,汪汪叫;定一个方法用来输出汪汪,模拟狗的叫声。

class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)

以上代码定义了一个动物类,名为AnimalClass,其中有类变量(或说属性),age代表年龄、sex代表性别、sound代表发出的声音、ismammal代表是否是哺乳动物,0代表不是,1代表是;定义了一个函数,类里面的函数跟外面的自定义函数定义类似,这个函数输出sound变量。

函数里面默认传入一个self,默认代表类本身,如果调用sound不使用self,那么这个类方法将会不识别,不认识sound变量,传入self后,使用self运用点“.”运算符可以获取到当前类的sound变量。 我们新建一个对象:

class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
dog = AnimalClass()
dog.say()

这个时候dog为AnimaClass的对象,拥有这个类里面的所有属性和方法。我们使用dog调用say(),也就是dog这个对象使用say方法,在AnimalClass类中,say函数是输出叫声的文字,那么结果将会显示出叫声“呜呜叫”。 查看结果:

我们可以直接使用dog这个对象使用点“.”运算符获取它自身的属性sound,配合print()函数作为输出,也一样可以达到效果:

class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
dog = AnimalClass()
dog.say()
print(dog.sound)

结果如下:

继承 即一个派生类继承基类的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

派生类:例如我们创建一个类是动物,动物的基本属性有毛发、眼睛、呼吸器官等。我们创建一个鸟的类别,继承了动物类,那么鸟这个类别是动物;在这里鸟就是派生类,动物就是基类。

class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
class BirdClass(AnimalClass):
    sound='唧唧叫'
maque=BirdClass()
maque.say()

以上代码我们新建了一个BirdClass鸟的对象,在BirdClass类后面使用一个圆括号,圆括号里面的是基类,这个类继承AnimalClass这个类,拥有这个对象的属性和方法。所以在BirdClass中没有看到其它方法和变量,只有一个sound把呜呜叫改成了唧唧叫,毕竟是鸟,一般都是唧唧叫吧。 在这里重新给sound赋值叫做重写,我们重写了其中一个属性。不仅类变量可以重写,方法也可以重写。

类方法重写 如果从父类继承的方法不能满足子类的需求,可以 对其进行改写,这个过程叫方法的覆盖,也称为方 法的重写。 在这里我们并没有重写say方法,但是BirdClass还是继承了基类的方法。我们新建了一个BirdClass的对象maque(麻雀),使用maque调用say方法,结果如下:

结果是“唧唧叫”,因为我们在BirdClass类中重写了叫声sound变量。 接下来我们尝试一下方法重写。

class AnimalClass:
    age=0
    sex='未知'
    ismammal=0
    sound='呜呜叫'
    def say(self):
        print(self.sound)
        
class BirdClass(AnimalClass):
    sound='唧唧叫'
    def say(self):
        print('我是鸟类,我会',self.sound)
maque=BirdClass()
maque.say()

以上代码在BirdClass类中重写了say方法,在print中添加了’我是鸟类,我会’,字符串。 查看运行结果