第11节-面向对象一(类/属性和方法/self参数)

一、拓展复习

可变序列:列表、字典、集合(只能存储不可变对象,却可变序列,因为元素可改变)
不可变序列:元组、字符串

可变类型:列表、字典、集合
不可变类型:元组、字符串、int、bool

可变:值可以改变,id不会改变
不可变:值不可以变

二、对象的简介

(1)面向过程的编程方式:符合人类思维,编写容易;但是往往只适用于一个功能,复用性较低

(2)面向对象的编程方式:把所有功能封装变成可直接调用的对象(如:第三方库/模块);不注重过程,只看结果;

对象相当于一个容器

三、类的简介

内置类:int、str、dict、list等

类:相当于一张图纸,用于创建容器(对象)的;对象是图纸的实例化;
如果多个对象是通过一个类创建出来的,我们就称这些对象是一类对象

我们自己定义类,需要以大写字母开头(python规定)

语法:注意创建实例需要带括号
在这里插入图片描述
isinstance(mc, MyClass)返回布尔值,用于判断某个对象是否是某个类的实例
在这里插入图片描述

四、类的使用

1、在实例中定义:

添加变量:在对象中添加的变量我们称之为属性
语法: 对象.属性名称 = 属性值
在这里插入图片描述

2、在类中间定义:

(1)数据(属性):变量赋值
(2)行为(方法):类内定义函数
在这里插入图片描述
方法调用和函数调用的区别:
(1)如果是函数调用,有几个形参,就要传递几个实参
(2)如果是方法调用,虽然默认要指定一个形参,但不可传递实参

总结
(1)在类代码中,我们可以定义变量和函数(属性和方法)
(2)变量会成为该类创建的实例的公共属性,所有的该类实例都可以通过“对象.属性”的形式访问
(3)函数会成为该类创建的实例的公共方法,所有的该类实例都可以通过“对象.方法名”的形式访问

五、属性和方法

类中定义的属性为默认属性,如果外面重新定义了属性,则优先调用外面的
在这里插入图片描述
当我们调用一个对象的属性时,解释器会在当前对象中寻找是否含有该属性
(1)如果有,则直接返回当前对象的属性值
(2)如果没有,则去当前对象的类定义中寻找,如果有则返回当前类定义中的属性值,如果没有则报错
(3)如果两个都有,则直接返回当前对象的属性值

注意:类中如果定义了重复的属性名,则后面的会覆盖前面的

总结
(1)类对象(类定义)和实例对象都可以保存属性和方法
(2)如果这个属性或方法,是所有实例共享的,则应该保存到类对象中
(3)如果这个属性或方法,是某个实例独有的,则应该保存到实例对象中
所以一般情况下,属性保存到实例对象中,方法保存到类对象中(因为方法一般可共用,而属性一般都是独有的)

六、self参数

注意:在类里面,不能调用类外部的变量
在这里插入图片描述
但实例属性可以被调用,实例的源头是类自身,如下图:
在这里插入图片描述
在这里插入图片描述
如上图:p,p.speak(),m三者是位于相同位置上的相同对象(因为调用的源头都是同一类对象),也就是说通过哪个对象调用m参数就是哪个对象(m=p)
p.speak()不是实例方法,而是类方法,方法是类中定义的
在这里插入图片描述
总结:
在类中定义方法,会默认传递一个参数
通过发现,如果是p1调用,则m就是p1对象;如果p2调用,m就是p2对象
一般我们称这个参数为self(是规范,不是规则)

self参数就是指:哪个实例调用类方法,self就是这个实例对象本身
在这里插入图片描述
如上图:一个类中的多个方法,id都是一致的,因为调用的源头都是同一类对象

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值