python基础语法 - 类和对象

python 类与对象,基础小记
摘要由CSDN通过智能技术生成

What(是什么)

  • 类是什么?对象又是什么?
  • 首先了解下封装的概念:把乱七八糟的数据扔进列表里面,这是一种封装;把常用的代码打包成一个函数,这也是一种封装。
  • 对象就是这种封装思想的进一步,把数据和代码封装在一块。它源于真实世界。
  • 比如,乌龟是真实世界的一个对象,那么怎么来描述这个对象呢(乌龟)?分成两部分:
    • 从静态的特征:黑色的,四条腿,5kg重,有外壳等等。
    • 从动态的行为:会爬,会咬人,吃东西,睡觉等等。
  • 再举个例子:
    • 如在真实世界中的校园有学生和老师,学生有学号、姓名、班级等(属性),还有学习、吃饭、走路等行为(方法)。
    • 如果开发一个校园管理系统,那么在构建的时候,有老师和学生等“类”;也有张三、李四作为学生类里面的个体,这就是“对象”。
  • 如下图的汽车
    在这里插入图片描述
  • 这种思想,有哲学方面的考究,如柏拉图的理念论,现实世界的个体(对象)是理念(模型)的投影(类)。
  • 简单来说,类是一种高级抽象,就是一种高级的数据类型,是对象的蓝图,就是用来定义你要用的对象的属性和行为的。

Why(为什么)

  • 为什么要用到类与对象呢?
  • 先说作用:类里面可以写实现一些功能的代码,可以减少代码的复用。
  • 这种编程思想的精髓就在:封装、继承、多态,这个我们后面会说怎么应用。
  • 类与对象是同时出现的,光有类,只有模型,没有对其实际操作的对象,是什么都干不了的。

How(怎么用)

  • 知道了是什么,为什么,接下来就是怎么用呢?

定义类

  • 语法:在这里插入图片描述
  • 如上面的小汽车:
    在这里插入图片描述

创建对象

  • 类是模板,根据模板创建的实例,也就是“对象”。
  • 如图
    在这里插入图片描述

类的成员

  • 在类体中可以包含类的成员。
    在这里插入图片描述
  • 成员变量:保存类或对象的属性。(变量)
  • 构造方法:一种特殊的函数,初始化类的成员变量。
  • 成员方法:类中定义的函数。(方法/行动)
  • 属性:对类进行封装而提供的特殊方法。
  • 实例变量/方法与类变量/方法的区别:实例变量/方法属于对象,通过对象调用;类变量/方法属于类,通过类调用。
    在这里插入图片描述

实例变量

  • 对象个体特有的“数据”。
    在这里插入图片描述
  • 类中的self表示当前对象,构造方法中的self参数说明了这个方法属于实例,self.age表示age属于实例,即实例成员变量。

构造方法

  • 用来创建和初始化实例变量。
  • 第1个参数是self,后面的参数用来初始化实例变量。调用构造方法就不用传入self参数了。
    在这里插入图片描述

实例方法

  • 某个实例(对象)个体特有的方法。
  • 第一个参数self,绑定实例与方法,调用是不需要传入self。
    在这里插入图片描述

类变量

  • 属于类的变量,不属于单个对象。
  • 如,一个银行账户的类,三个变量:账户金额、利率、账户名。利率是相同的,账户金额跟账户名是不同的。 所以利率是类变量(所有实例成员共享的),其余两个是实例变量。
    在这里插入图片描述

类方法

  • 属于类,不属于个体对象。
  • 第1个参数不是self,而是类本身。
    在这里插入图片描述
  • 注意:类方法不能访问实例方法和实例变量。

封装性

  • 面向对象的基本特性之一。
  • 封装隐藏对象内部细节,保留有限的对外接口,使操作对象格外简单。

私有变量

  • 内部数据(成员变量)会被封装为“私有变量”,外部调用者只能通过方法调用。
  • python默认变量是公有的,前面加__(双下划线),即变成私有变量。
    在这里插入图片描述

私有方法

  • 同理,在定义方法时加上__(双下划线),即变成私有方法。
    在这里插入图片描述

使用属性

  • 为了实现对象的封装,一个类中,不该有公有的成员变量,这些成员变量都应该设为私有的,然后通过公有的set和get方法访问。

    class Dog():
        def __init__(self, name, age, sex="雄性"):
            self.name = name
            self.__age = age
            self.sex = sex
    
        def run(self):
            print("{}在跑...".format(self.name))
    
        # 定义get()方法,返回私有实例变量__age
        def get_age(self):
            return self.__age
    
        # 定义set()方法,通过age参数更新私有实例变量__age
        def set_age(self, age):
            self.__age = age
    
    d = Dog(
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值