面向对象第二节

一. 特殊方法

特殊方法都是以__开头__结尾 不需要自己调用

对象创建流程

p1 = Person()
1.创建了一个变量
2.在内存中创建一个变量
3.执行类中的代码块中的代码(只执行一次)
4.__init__方法执行了
__init__会在对象(指p1之类)创建的时候立即调用会像创建的对象初始化属性
在这里插入图片描述

在这里插入图片描述

二. 练习

我们要增加数据安全性

  1. 属性不能随意修改(我让你改才能改)
  2. 属性不能改为任意的值
    在这里插入图片描述

三.封装一

就是把一些不想让别人修改的变量隐藏起来
面向对象的三大特性之一, 就是指隐藏对象中一些不希望被外部访问到的属性和方法
我们可以提供一个getter和setter方法可以访问和修改属性

使用封装确实增加了类定义的复杂度,但是它确保了数据的安全性

  1. 隐藏了封装的属性名, 使调用者无法随意修改对象中的属性
  2. 增加了getter和setter方法,可以很好控制属性是否是只读的
  3. 如果属性只读的,去掉setter方法; 如果希望属性不能被外部访问,则去掉getter方法
  4. 使用setter方法设置属性,可以增加数据的值是正确的
  5. 可以在设置属性的时候进行一些其他操作
将对象的属性名修改成外部不知道的

在这里插入图片描述
通过这样就可以让外面不知道里面的变量名, 修改不了

在这里插入图片描述
在这里插入图片描述

四. 封装二(一般用一个下划线就可以了)

可以为对象的属性使用双下划线开头
双下划线开头的属性是对象的隐藏属性,只能在内部访问, 不能通过外部进行访问或修改

利用__开头其实是解释器自动帮我们修改成了一个的属性名字(_类名__属性名)

在这里插入图片描述

五. property

n.name 是一个属性 ; n. name()是一个方法
property就是将方法转换成属性
添加这个装饰器以后,我们可以像调用属性一样调用方法
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值