• Python学习笔记(13)-面向对象编程-类和对象


    面向对象编程

    在学习面向对象编程之前我们一直使用面向过程进行编程,也就是说把完成一件事的所有过程都要考虑周全,举个例子,我们要做一道炒鸡蛋的菜,使用面向过程编程要考虑家里有没有鸡蛋、油,如果没有就去买,然后开火放油放鸡蛋还要考虑火的大小和鸡蛋的生熟程度等等,每一步骤都要考虑清楚,而使用面向对象编程我们只需找到一个会做炒鸡蛋的人,把事情交给他去做,我们只负责吃就可以了,不用关心他是怎么做的

    面向对象编程要使用对象,那么对象是怎么创建的呢?,答案是由类创建的,那么什么又是类呢?

    我们来列举下生活当中的类如:汽车图纸、玩具模型等,它们有一个共同特点,即通过它们可以制造出许多真实的汽车和许多真实的玩具

    总而言之:类就是创建对象的模板

    类由三部分组成:

    1、名称:给类起的名字,定义这是一个汽车类还是一个动物类等

    2、属性:一组特征数据,如汽车类的属性都有颜色、外观、速度等

    3、方法:这个类都会有哪些功能,如汽车类的方法可以移动、前进、后退等

    定义类:

    class 类名:

      属性

      方法

    注意:

    1、class 类名:也可以写成class 类名(object):,没什么区别,第一种是经典类,第二种是新式类

    2、类名通常使用大驼峰方式命名

    3、方法样式几乎与前面学的函数相同,不同点为方法的形参中第一项必须写上self且不需要给self传参数

    如定义一个车类:

    class Car:

      属性

      def move(self):

        print("车在移动...")

      def alarm(self):

        print("车在告警...")

    说明:属性如何定义会在后面提到  

    对象

    由类创建出的实体就叫做对象

    创建形式为:对象名 = 类()

    如:

    class Car:

      def move(self):

        print("车在移动...")

    Aodi = Car() 

    Aodi.move()

    运行结果:

    车在移动...

    说明:

    1、通过Aodi = Car()则创建了一辆Aodi(奥迪) 车

    2、类(Car)创建出的对象(Aodi)可以使用类中的方法(move,因为定义在类中,所以这里不叫函数叫方法)

    self用途与含义

    下面通过车类创建多个对象(一个类可以创建无数多个同类对象),如:

    class Car:

      def move(self):
        print("%s车在移动..."%Aodi.name)
    Aodi = Car()
    Aodi.name = "奥迪"
    Aodi.move()

    Baoma = Car()
    Baoma.name = "宝马"
    Baoma.move()

    运行结果:

    奥迪车在移动...

    奥迪车在移动...

    奥迪车和宝马车均可以使用类中的move方法,但是格式化输出时%号后面写谁的名字属性都达不到想要的效果,写奥迪的名字都打印奥迪车在移动,写宝马的名字都打印宝马车在移动,这里我们想要达到的效果为奥迪车调用move方法时打印奥迪车信息,宝马车调用move方法时打印宝马车信息,这是我们就使用self来解决,self含义可以理解为自身,哪一个对象调用方法self就代表哪一个对象,所以更改代码为print("%s车在移动..."%self.name),这时运行结果为:奥迪车在移动...,宝马车在移动

    说明:

    Aodi.name = "奥迪",意为添加Aodi对象的名字属性(属性通常不在这里创建,为了介绍self含义临时创建在这里)

    __init__方法

    如果类中定义了__init__方法,则表示在创建对象时系统会默认调用此方法,也叫初始化方法,如:

    class Car:

      def __init__(self,new_name):

        self.name = new_name

      def move(self):

        print("%s车在移动..."%self.name)
    Aodi = Car("奥迪")
    Aodi.move()

    Baoma = Car("宝马")
    Baoma.move()

    运行结果:

    奥迪车在移动...

    宝马车在移动...

    说明:

    1、类在创建对象时就已经有默认的属性(如创建一辆汽车时就已经注定这个车子是什么品牌,有几个轮子等),所以类的属性一般定义在__init__方法中

    2、__init__方法在创建对象时候被调用,所以属性通过(对象 = Car(属性))传入方法中

  • 相关阅读:
    Python文件File方法
    python的slice notation的特殊用法
    函数
    字典
    python 笔记7
    列表解析与生成器
    [CenOS7][Mac] MAC环境中dubbo连接zookeeper超时
    [JAVA][Thread] 实现Runnable接口和继承Thread类创建线程哪种方式更好?
    [Java] String字符常量类型作为参数传递的一些问题
    [JAVA]hashCode()和identityHashCode()的区别
  • 原文地址:https://www.cnblogs.com/lidongaistudy/p/9566549.html
Copyright © 2020-2023  润新知